From 9447182809efe5ad41acb950b0469d93f3963be7 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 14 May 2025 08:47:08 +0200 Subject: [PATCH] Add debug logging for failed WebEngineHistory deserialization This sometimes fails with 'The data stream has read past the end of the data in the underlying device', which turns up in crash reports around once a month. This is somewhat similar to https://bugreports.qt.io/browse/QTBUG-117489 - but without knowing the data and without being able to reproduce, it's unclear what the culprit could be. --- qutebrowser/browser/webengine/webenginetab.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index cebc77767..98b6e275c 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -626,7 +626,14 @@ class WebEngineHistoryPrivate(browsertab.AbstractHistoryPrivate): return data def deserialize(self, data): - qtutils.deserialize(data, self._history) + try: + qtutils.deserialize(data, self._history) + except OSError: + dump = "\n".join( + bytes(line).hex(" ") for line in utils.chunk(bytes(data), 16) + ) + log.webview.debug(f"Failed to deserialize history data:\n{dump}") + raise def _load_items_workaround(self, items): """WORKAROUND for session loading not working on Qt 5.15.