8000 Service Worker related crashes · Issue #5634 · qutebrowser/qutebrowser · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Service Worker related crashes #5634
Open
@The-Compiler

Description

@The-Compiler

Summary if you've been linked to this issue due to crashes

Due to a yet-unknown issue (possibly unclean shutdowns of qutebrowser?), the "Service Worker" storage used by the underlying QtWebEngine/Chromium gets corrupted. When qutebrowser is used with such a corrupt Service Worker storage, crashes will occur on pages which use the corrupted data, such as GMail. We've unfortunately never been able to figure out what causes the corruption (happening in the qutebrowser run before the crashes start!), help tracking this down would be much appreciated.

As a one-time fix, remove the webengine/Service Workers directory in qutebrowser's data directory (e.g. ~/.local/share/qutebrowser/webengine/Service Worker on Linux, see `:version for the exact location of the data directory). It's unclear whether websites are storing any data supposed to be persistent in there, but no such case is known so far, so it should be safe to delete.

As a permanent workaround, run :set qt.workarounds.remove_service_workers true. This make qutebrowser automatically remove the data (corrupted or not) on every start. Be aware that this will negatively impact the startup time (especially on a HDD) and could in theory delete data supposed to be persistent (see above). Please also consider first only removing the directory manually, in order to help track down what exactly causes the problem to appear again.


Original issue

Apparently QtWebEngine 5.15 still has some kind of issue with service workers. This is mostly a continuation of #4853 and #5279, i.e. a bug (or several) which has been following us in one way or another for over a year now 😢

The reproducer from #5279 with the Epic Games Store doesn't seem to reproduce the issue this time around, and the --disable-shared-workers workaround which is active for Qt 5.14 doesn't seem to help, according to a Reddit post.

Analyzing the crash with DebugDiag yields an unusable stacktrace (full log):

DetailID = 3
        Count:    2
        Exception #:  0XC0000005
        Stack:        
                Qt5WebEngineCore!GetHandleVerifier+0x1cf7e36
                Qt5WebEngineCore!GetHandleVerifier+0x1c6cd66
                Qt5WebEngineCore!QWebEngineUrlScheme::QWebEngineUrlScheme+0x311f13
                Qt5WebEngineCore!GetHandleVerifier+0x1d0f95a
                Qt5WebEngineCore!QtWebEngineCore::JavaScriptDialogController::qt_static_metacall+0x29ab3
                Qt5WebEngineCore!QWebEngineUrlSchemeHandler::qt_metacast+0x17d65
                Qt5WebEngineCore!GetHandleVerifier+0x92bf
                Qt5WebEngineCore!GetHandleVerifier+0x8dd2
                Qt5WebEngineCore!QWebEngineUrlSchemeHandler::qt_metacast+0xc964
                Qt5WebEngineCore!QWebEngineUrlSchemeHandler::qt_metacast+0xd1d2
                Qt5WebEngineCore!GetHandleVerifier+0x9762
                Qt5WebEngineCore!QWebEngineUrlSchemeHandler::qt_metacast+0x40059
                Qt5WebEngineCore!GetHandleVerifier+0x192aadd
                Qt5WebEngineCore!QWebEngineUrlSchemeHandler::qt_metacast+0x434d5
                Qt5WebEngineCore!QWebEngineUrlSchemeHandler::qt_metacast+0xe1d8
                KERNEL32!BaseThreadInitThunk+0x14
                ntdll!RtlUserThreadStart+0x21

However, kiburtse of the Qt Company did some crazy work at hand-decoding it:

base\threading\platform_thread_win.cc @ 108                                     base::`anonymous namespace'::ThreadFunc
base\threading\thread.cc @ 379                                                  base::Thread::ThreadMain
content\browser\browser_process_sub_thread.cc @ 135                             content::BrowserProcessSubThread::IOThreadRun
base\run_loop.cc @ 158                                                          base::RunLoop::Run
base\task\sequence_manager\thread_controller_with_message_pump_impl.cc @ 471    base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run
base\message_loop\message_pump_win.cc @ 76                                      base::MessagePumpWin::Run
base\message_loop\message_pump_win.cc @ 623                                     base::MessagePumpForIO::DoRunLoop
base\task\sequence_manager\thread_controller_with_message_pump_impl.cc @ 221    base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoSomeWork
base\task\sequence_manager\thread_controller_with_message_pump_impl.cc @ 366    base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl
base\task\common\task_annotator.cc @ 142                                        base::TaskAnnotator::RunTask
base\bind_internal.h @ 644                                                      base::internal::Invoker<...>::RunOnce
content\browser\cache_storage\cache_storage_operation.cc @ 50                   content::CacheStorageOperation::Run
base\bind_internal.h @ 621                                                      base::internal::InvokeHelper<1,void>::MakeItSo<...> >
content\browser\cache_storage\legacy\legacy_cache_storage.cc @ 1424             content::LegacyCacheStorage::SizeImpl
content\browser\cache_storage\legacy\legacy_cache_storage_cache.cc @ 856        content::LegacyCacheStorageCache::Size

At this point I'm not 100% sure it's Windows specific (I think I've heard of people on Linux who have crashes which are solved by moving the Service Worker directory away), but it definitely seems to mostly happen on Windows.

To clarify: This isn't a bug in qutebrowser, I'm just opening this to have a place to track anything new we find out. Right now it'd still really help to have a reliable reproducer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug: segfault/crash/hangThere's a low-level crash in C++, or a hang/freeze.component: QtWebEngineIssues related to the QtWebEngine backend, based on Chromium.priority: 0 - highIssues which are currently the primary focus.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0