Summary: | Discover crashes on opening without an internet connection | ||
---|---|---|---|
Product: | [Applications] Discover | Reporter: | rubenprimrose |
Component: | discover | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | aleixpol, bugseforuns, duha.bugs, sourcework, vorobyov.dimka |
Priority: | NOR | Keywords: | drkonqi |
Version: | 5.27.8 | ||
Target Milestone: | --- | ||
Platform: | Debian stable | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/discover/-/commit/107716c0b3a9e2dc4ac569ca002ee71dc59baa0d | Version Fixed In: | 5.27.9 |
Sentry Crash Report: | |||
Attachments: | New crash information added by DrKonqi |
Description
rubenprimrose
2023-08-29 21:50:40 UTC
Can reproduce on neon unstable. Git commit 2e52e7c9aa44ca1b3f5009fd7e6daf66fc8d31a6 by Harald Sitter. Committed on 06/10/2023 at 13:14. Pushed by sitter into branch 'master'. packagekit: hold stream in a qpointer there is a very awkward race condition involving streams during initialization. if any of the (KNS) backends fail to initialize and become invalid they will eventually trigger `ResourcesModel::callerFetchingChanged` which will discard the now invalid backends and emit `backendsChanged` which will trigger `ResourcesProxyModel::invalidateFilter` which then may end up deleting the current stream ``` if (m_currentStream) { qCWarning(LIBDISCOVER_LOG) << "last stream isn't over yet" << m_filters << this; delete m_currentStream; ``` this is in so far problematic as we "schedule" lambda executions in the packagekit backend (most prominently in `PackageKitBackend::search`) with lambdas that hold the stream. these lambdas will eventually run on since-deleted stream objects and best case fall into a nullptr but more regularly just fall into a ditch of random memory until undefined behavior bites us Related: bug 467888, bug 465711 M +31 -8 libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp https://invent.kde.org/plasma/discover/-/commit/2e52e7c9aa44ca1b3f5009fd7e6daf66fc8d31a6 Git commit 107716c0b3a9e2dc4ac569ca002ee71dc59baa0d by Harald Sitter. Committed on 06/10/2023 at 13:16. Pushed by sitter into branch 'Plasma/5.27'. packagekit: hold stream in a qpointer there is a very awkward race condition involving streams during initialization. if any of the (KNS) backends fail to initialize and become invalid they will eventually trigger `ResourcesModel::callerFetchingChanged` which will discard the now invalid backends and emit `backendsChanged` which will trigger `ResourcesProxyModel::invalidateFilter` which then may end up deleting the current stream ``` if (m_currentStream) { qCWarning(LIBDISCOVER_LOG) << "last stream isn't over yet" << m_filters << this; delete m_currentStream; ``` this is in so far problematic as we "schedule" lambda executions in the packagekit backend (most prominently in `PackageKitBackend::search`) with lambdas that hold the stream. these lambdas will eventually run on since-deleted stream objects and best case fall into a nullptr but more regularly just fall into a ditch of random memory until undefined behavior bites us Related: bug 467888, bug 465711 (cherry picked from commit 2e52e7c9aa44ca1b3f5009fd7e6daf66fc8d31a6) M +31 -8 libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp https://invent.kde.org/plasma/discover/-/commit/107716c0b3a9e2dc4ac569ca002ee71dc59baa0d Created attachment 162897 [details]
New crash information added by DrKonqi
plasma-discover (5.27.5) using Qt 5.15.8
I was sending an error report when another error occurred during stack collection.
-- Backtrace (Reduced):
#4 0x00007f2647339ad9 in PackageKitBackend::resolvePackages(QStringList const&) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/discover/packagekit-backend.so
[...]
#7 0x00007f26790dd6f0 in QObject::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#8 0x00007f267ab62fae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9 0x00007f26790b16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007f26790b4681 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
Can reproduce in : 5.27.8 Linux/KDE Plasma: 23.10 kubunu (available in About System) KDE Plasma Version: 5.27.8 KDE Frameworks Version: 5.110.0 Qt Version: 5.15.10 Fixed in 5.27.9 and later. |