Summary: | Crash when switching emails | ||
---|---|---|---|
Product: | [Applications] kmail2 | Reporter: | Albert Astals Cid <aacid> |
Component: | general | Assignee: | kdepim bugs <kdepim-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | asturm, sebastian.schrader |
Priority: | NOR | ||
Version: | 5.22.0 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/pim/messagelib/-/commit/938fab622b7eb258f89f9b1492a3a264c260be58 | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: | gdb thread apply all bt (with debug symbols) |
Description
Albert Astals Cid
2022-12-15 20:37:57 UTC
A possibly relevant merge request was started @ https://invent.kde.org/pim/messagelib/-/merge_requests/100 Created attachment 154966 [details]
gdb thread apply all bt (with debug symbols)
I can observe similar message viewer switching related crashes and backtraces. It's easier to reproduce with complex/large messages (probably due to timing). Here's one such backtrace.
OS: Arch Linux (x86_64)
KMail: 5.22.0 (22.12.0)
A possibly relevant merge request was started @ https://invent.kde.org/pim/messagelib/-/merge_requests/128 Git commit 624cee41de9780e73951913282eceb376fd34788 by Daniel Vrátil. Committed on 29/05/2023 at 12:40. Pushed by dvratil into branch 'release/23.04'. Fix crash when switching signed/encrypted emails very fast Kleo::KeyCache internally uses a QEventLoop to block until it finishes initializing. The initialization happens the first time the user opens a signed or encrypted email. If they switch to another email before the KeyCache is done initializing it leads to a crash in MessageViewer, since message pointers change while MessageViewer is still "blocked" in OTP. To avoid the crash, and running a nested event loop in general, this change introduces KeyCacheMemento, which allows to wait for the KeyCache to initialize asynchronously before the MessagePart queries it. M +4 -0 mimetreeparser/src/CMakeLists.txt A +61 -0 mimetreeparser/src/memento/compositememento.cpp [License: GPL(v2.0+)] A +60 -0 mimetreeparser/src/memento/compositememento.h [License: GPL(v2.0+)] A +50 -0 mimetreeparser/src/memento/keycachememento.cpp [License: GPL(v2.0+)] A +40 -0 mimetreeparser/src/memento/keycachememento.h [License: GPL(v2.0+)] M +55 -16 mimetreeparser/src/messagepart.cpp M +9 -1 mimetreeparser/src/messagepart.h https://invent.kde.org/pim/messagelib/-/commit/624cee41de9780e73951913282eceb376fd34788 Git commit 938fab622b7eb258f89f9b1492a3a264c260be58 by Daniel Vrátil. Committed on 27/09/2023 at 23:13. Pushed by dvratil into branch 'release/23.08'. Fix crash when switching signed/encrypted emails very fast Kleo::KeyCache internally uses a QEventLoop to block until it finishes initializing. The initialization happens the first time the user opens a signed or encrypted email. If they switch to another email before the KeyCache is done initializing it leads to a crash in MessageViewer, since message pointers change while MessageViewer is still "blocked" in OTP. To avoid the crash, and running a nested event loop in general, this change introduces KeyCacheMemento, which allows to wait for the KeyCache to initialize asynchronously before the MessagePart queries it. (cherry picked from commit 624cee41de9780e73951913282eceb376fd34788 from 23.04 branch, because I forgot to merge it to master, so it did not merge it to 23.08) M +4 -0 mimetreeparser/src/CMakeLists.txt A +61 -0 mimetreeparser/src/memento/compositememento.cpp [License: GPL(v2.0+)] A +60 -0 mimetreeparser/src/memento/compositememento.h [License: GPL(v2.0+)] A +50 -0 mimetreeparser/src/memento/keycachememento.cpp [License: GPL(v2.0+)] A +40 -0 mimetreeparser/src/memento/keycachememento.h [License: GPL(v2.0+)] M +55 -16 mimetreeparser/src/messagepart.cpp M +9 -1 mimetreeparser/src/messagepart.h https://invent.kde.org/pim/messagelib/-/commit/938fab622b7eb258f89f9b1492a3a264c260be58 |