diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-01-27 14:06:21 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-01-27 14:06:21 +0100 |
commit | 7d8fd507924309227ebb6c11c3d32cb0b013d238 (patch) | |
tree | efbc2f302b577b51ed59c8b8092908f843daba4d /qutebrowser | |
parent | b0c812b239e000da384c04f716e8ec9f38ad870a (diff) | |
download | qutebrowser-7d8fd507924309227ebb6c11c3d32cb0b013d238.tar.gz qutebrowser-7d8fd507924309227ebb6c11c3d32cb0b013d238.zip |
Add qt.workarounds.remove_service_workers setting
See #5656, #5634
Diffstat (limited to 'qutebrowser')
-rw-r--r-- | qutebrowser/config/configdata.yml | 13 | ||||
-rw-r--r-- | qutebrowser/misc/backendproblem.py | 17 |
2 files changed, 22 insertions, 8 deletions
diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index 69786f2b3..cee077c14 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -286,6 +286,19 @@ qt.highdpi: As an alternative to this, it's possible to set font sizes and the `zoom.default` setting. +qt.workarounds.remove_service_workers: + type: Bool + default: false + desc: >- + Delete the QtWebEngine Service Worker directory on every start. + + This workaround can help with certain crashes caused by an unknown QtWebEngine bug + related to Service Workers. Those crashes happen seemingly immediately on Windows; + after one hour of operation on other systems. + + Note however that enabling this option *can lead to data loss* on some pages (as + Service Worker data isn't persisted) and will negatively impact start-up time. + ## auto_save auto_save.interval: diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py index 1011e539d..b5f72b521 100644 --- a/qutebrowser/misc/backendproblem.py +++ b/qutebrowser/misc/backendproblem.py @@ -403,21 +403,22 @@ class _BackendProblemChecker: # Nuke the service worker directory once for every install with Qt # 5.14, given that it seems to cause a variety of segfaults. configfiles.state['general']['serviceworker_workaround'] = '514' - affected = True + reason = 'Qt 5.14' + elif configfiles.state.qt_version_changed: + reason = 'Qt version changed' + elif config.val.qt.workarounds.remove_service_workers: + reason = 'Explicitly enabled' else: - # Otherwise, just nuke it when the Qt version changed. - affected = configfiles.state.qt_version_changed - - if not affected: return - service_worker_dir = os.path.join(standarddir.data(), 'webengine', - 'Service Worker') + service_worker_dir = os.path.join( + standarddir.data(), 'webengine', 'Service Worker') bak_dir = service_worker_dir + '-bak' if not os.path.exists(service_worker_dir): return - log.init.info("Qt version changed, removing service workers") + log.init.info( + f"Removing service workers at {service_worker_dir} (reason: {reason})") # Keep one backup around - we're not 100% sure what persistent data # could be in there, but this folder can grow to ~300 MB. |