| Summary: | Just opening Discover seems to crash it in PackageKitBackend::resolvePackages() (5.27.3 this time) | ||
|---|---|---|---|
| Product: | [Applications] Discover | Reporter: | the_archer_xz |
| Component: | PackageKit | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | aleixpol, cjknight323, dbkbusiness, drex.cipher0357, electrospek, fstemp, goldenajf, helenius.toni, luisdiasrj, lunyov.dmitiry.2004, nate, neriparente2014, ojschmidt, reginaldobarbosajr, tandatanya, willsam90 |
| Priority: | VHI | Keywords: | drkonqi |
| Version First Reported In: | 5.27.3 | ||
| Target Milestone: | --- | ||
| Platform: | Neon | ||
| OS: | Linux | ||
| See Also: |
https://bugs.kde.org/show_bug.cgi?id=465711 https://bugs.kde.org/show_bug.cgi?id=495888 |
||
| Latest Commit: | https://invent.kde.org/plasma/discover/-/commit/107716c0b3a9e2dc4ac569ca002ee71dc59baa0d | Version Fixed/Implemented In: | 5.27.9 |
| Sentry Crash Report: | |||
|
Description
the_archer_xz
2023-03-28 16:15:11 UTC
Found a temporary fix to this. Seems like when Discover starts with the default 'browse' mode, it crashes. So, out of this list I pulled: Available modes: * Browsing * Installed * Search * Update * Sources * About All those options work except browsing. Browsing mode will just crash Discover. I just edited shortcut in the menu to this: plasma-discover --mode search And now Discover works. *** Bug 469422 has been marked as a duplicate of this bug. *** *** Bug 466702 has been marked as a duplicate of this bug. *** *** Bug 472898 has been marked as a duplicate of this bug. *** *** Bug 473584 has been marked as a duplicate of this bug. *** *** Bug 474046 has been marked as a duplicate of this bug. *** *** Bug 467068 has been marked as a duplicate of this bug. *** *** Bug 474764 has been marked as a duplicate of this bug. *** 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 465711, bug 473921
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 465711, bug 473921
(cherry picked from commit 2e52e7c9aa44ca1b3f5009fd7e6daf66fc8d31a6)
M +31 -8 libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp
https://invent.kde.org/plasma/discover/-/commit/107716c0b3a9e2dc4ac569ca002ee71dc59baa0d
*** Bug 475429 has been marked as a duplicate of this bug. *** *** Bug 475526 has been marked as a duplicate of this bug. *** *** Bug 476835 has been marked as a duplicate of this bug. *** *** Bug 482259 has been marked as a duplicate of this bug. *** *** Bug 494186 has been marked as a duplicate of this bug. *** *** Bug 495478 has been marked as a duplicate of this bug. *** *** Bug 495007 has been marked as a duplicate of this bug. *** |