| Summary: | Discover crash upon startup in FlatpakBackend::getAppForInstalledRef() after failing to find flathub | ||
|---|---|---|---|
| Product: | [Applications] Discover | Reporter: | Berk Elyesa Yıldırım <beryesa> |
| Component: | Flatpak Backend | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | aleixpol, jgrulich, nate, travier |
| Priority: | NOR | ||
| Version First Reported In: | 5.27.2 | ||
| Target Milestone: | --- | ||
| Platform: | Fedora RPMs | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/discover/commit/542f88c90fddd1974b0178a73decd5411ea52148 | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
| Attachments: | backtrace | ||
Thanks, that's a great backtrace. Pasting it inline for searchability:
Thread 1 (Thread 0x7ffff16d9940 (LWP 18288) "plasma-discover"):
#0 0x00007fffbc319f3d in FlatpakBackend::getAppForInstalledRef(_FlatpakInstallation*, _FlatpakInstalledRef*, bool*) const (this=this@entry=0x555555b16320, installation=installation@entry=0x7fff9c004ad0, ref=ref@entry=0x555555ab3c10, freshResource=freshResource@entry=0x0) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:522
origin = {d = 0x555555b94e30}
source = {value = 0x0, d = 0x0}
pathExports = {d = 0x555555b8a120}
pathApps = {d = 0x555555b50da0}
refId = {d = 0x555555b0d370}
cid = {m_cpt = 0x555555b6d360}
resource = <optimized out>
#1 0x00007fffbc31b868 in FlatpakBackend::loadLocalUpdates(_FlatpakInstallation*) (flatpakInstallation=0x7fff9c004ad0, this=0x555555b16320) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:1149
ref = 0x555555ab3c10
latestCommit = 0x555555b5b460 "2036d952f295ada5fd8e7d9f2462dc5ddcec42ef647100315bb3691503091bae"
commit = <optimized out>
resource = <optimized out>
i = 2
localError = 0x0
refs = 0x555555b4cf00
installation = 0x7fff9c004ad0
__for_range = @0x555555b16378: {d = 0x555555b426a0}
__for_begin = 0x555555b426c0
__for_end = 0x555555b426c8
#2 FlatpakBackend::metadataRefreshed(_FlatpakRemote*) (remote=<optimized out>, this=0x555555b16320) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:1040
installation = 0x7fff9c004ad0
__for_range = @0x555555b16378: {d = 0x555555b426a0}
__for_begin = 0x555555b426c0
__for_end = 0x555555b426c8
#3 FlatpakBackend::metadataRefreshed(_FlatpakRemote*) (this=this@entry=0x555555b16320, remote=<optimized out>, remote@entry=0x555555b38150) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:1033
#4 0x00007fffbc31d24a in FlatpakBackend::integrateRemote(_FlatpakInstallation*, _FlatpakRemote*) (this=<optimized out>, flatpakInstallation=<optimized out>, remote=<optimized out>) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:1116
source = {value = 0x555555b4e9a0, d = 0x555555b4e990}
#5 0x00007fffbc327413 in FlatpakBackend::checkForRemoteUpdates(_FlatpakInstallation*, _FlatpakRemote*) (this=0x555555b16320, installation=0x7fffa000ab40, remote=<optimized out>) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:1839
needsIntegration = true
job = <optimized out>
#6 0x00007fffbc31f673 in FlatpakBackend::loadRemote(_FlatpakInstallation*, _FlatpakRemote*) (this=0x555555b16320, installation=0x7fffa000ab40, remote=<optimized out>) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:1007
fileTimestamp = 0x555555b4c940
path_str = 0x555555b559f0 "/var/lib/flatpak/appstream/fedora-testing/x86_64/.timestamp"
fileInfo = {d_ptr = {d = 0x555555a78800}}
#7 0x00007fffbc30ece9 in FlatpakBackend::loadAppsFromAppstreamData(_FlatpakInstallation*) (flatpakInstallation=0x7fffa000ab40, this=0x555555b16320) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:992
remote = <optimized out>
i = 0
error = 0x0
remotes = 0x555555b48e80
installation = 0x7fffa000ab40
__for_range = @0x555555b16378: {d = 0x555555b426a0}
__for_begin = 0x555555b426b8
__for_end = 0x555555b426c8
error = 0x0
c = <optimized out>
#8 FlatpakBackend::loadAppsFromAppstreamData() (this=0x555555b16320) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:973
installation = 0x7fffa000ab40
__for_range = @0x555555b16378: {d = 0x555555b426a0}
__for_begin = 0x555555b426b8
__for_end = 0x555555b426c8
error = 0x0
c = <optimized out>
#9 FlatpakBackend::FlatpakBackend(QObject*) (parent=<optimized out>, this=0x555555b16320) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:302
error = 0x0
c = <optimized out>
#10 FlatpakBackendFactory::newInstance(QObject*, QString const&) const (this=<optimized out>, parent=<optimized out>, name=...) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp:57
c = <optimized out>
#11 0x00007ffff7ec9509 in DiscoverBackendsFactory::backendForFile(QString const&, QString const&) const (this=this@entry=0x7fffffffd2cf, libname=..., name=...) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/DiscoverBackendsFactory.cpp:58
loader = 0x555555b0b680
f = <optimized out>
instances = {d = 0xc95663a3f71dc700}
#12 0x00007ffff7ec9a5f in DiscoverBackendsFactory::backend(QString const&) const (this=this@entry=0x7fffffffd2cf, name=...) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/DiscoverBackendsFactory.cpp:44
#13 0x00007ffff7ec9bcb in operator() (name=..., __closure=<synthetic pointer>) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/DiscoverBackendsFactory.cpp:95
v = @0x555555a78dd0: {d = 0x555555a78d40}
__for_range = @0x7fffffffd240: {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x555555a78db0}, d = 0x555555a78db0}}, <No data fields>}
names = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x555555a78db0}, d = 0x555555a78db0}}, <No data fields>}
ret = {d = 0x555555ab7b70}
#14 kTransform<QVector<AbstractResourcesBackend*>, QStringList, DiscoverBackendsFactory::allBackends() const::<lambda(const QString&)> > (op=..., input=...) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/utils.h:53
v = @0x555555a78dd0: {d = 0x555555a78d40}
__for_range = @0x7fffffffd240: {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x555555a78db0}, d = 0x555555a78db0}}, <No data fields>}
names = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x555555a78db0}, d = 0x555555a78db0}}, <No data fields>}
ret = {d = 0x555555ab7b70}
#15 DiscoverBackendsFactory::allBackends() const (this=0x7fffffffd2cf) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/DiscoverBackendsFactory.cpp:96
names = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x555555a78db0}, d = 0x555555a78db0}}, <No data fields>}
ret = {d = 0x555555ab7b70}
#16 0x00007ffff7eb5e99 in ResourcesModel::registerAllBackends() (this=0x555555a6fdc0) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/resources/ResourcesModel.cpp:237
f = {<No data fields>}
backends = {d = 0x555555ab7b70}
#17 0x00007ffff7eafa38 in ResourcesModel::init(bool) (this=this@entry=0x555555a6fdc0, load=load@entry=true) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/resources/ResourcesModel.cpp:94
#18 0x00007ffff7eafa97 in ResourcesModel::global() () at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/resources/ResourcesModel.cpp:37
#19 0x00007ffff7ea6165 in CategoryModel::CategoryModel(QObject*) (this=0x555555a6fb80, parent=<optimized out>, this=<optimized out>, parent=<optimized out>) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/Category/CategoryModel.cpp:22
t = 0x555555a6fc10
#20 0x00007ffff7ea6375 in CategoryModel::global() () at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/libdiscover/Category/CategoryModel.cpp:39
instance = 0x0
#21 0x000055555558972f in DiscoverDeclarativePlugin::registerTypes(char const*) (this=<optimized out>) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/discover/DiscoverDeclarativePlugin.cpp:57
#22 0x0000555555575eba in DiscoverObject::DiscoverObject(DiscoverObject::CompactMode, QMap<QString, QVariant> const&) (this=0x5555559efce0, mode=<optimized out>, initialProperties=<optimized out>, this=<optimized out>, mode=<optimized out>, initialProperties=<optimized out>) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/discover/DiscoverObject.cpp:136
factory = <optimized out>
uri = 0x555555591126 "org.kde.discover"
plugin = 0x555555a682f0
action = <optimized out>
#23 0x000055555556daa8 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/plasma-discover-5.27.2-1.fc37.x86_64/discover/main.cpp:176
options = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {d = 0x7ffff5d6dd50 <QListData::shared_null>}, d = 0x7ffff5d6dd50 <QListData::shared_null>}}, <No data fields>}
initialProperties = {d = 0x7ffff5d6dd80 <QMapDataBase::shared_null>}
parser = {d = <optimized out>}
feedback = <optimized out>
service = <optimized out>
format = {d = 0x5555555d5640}
app = <incomplete type>
about = {d = std::unique_ptr<KAboutDataPrivate> = {get() = 0x5555559b48b0}}
mainWindow = 0x0
We definitely shouldn't crash here. Maybe we should have it try again a few times to account for network flakiness. A possibly relevant merge request was started @ https://invent.kde.org/plasma/discover/-/merge_requests/535 Git commit 2bed299745d7c56c53191e46a8affe89f19c0491 by Aleix Pol Gonzalez, on behalf of Aleix Pol. Committed on 14/04/2023 at 13:39. Pushed by apol into branch 'Plasma/5.27'. flatpak: Do not crash if for any reason we lack a ref's source M +19 -7 libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp https://invent.kde.org/plasma/discover/commit/2bed299745d7c56c53191e46a8affe89f19c0491 Git commit 542f88c90fddd1974b0178a73decd5411ea52148 by Aleix Pol Gonzalez, on behalf of Aleix Pol. Committed on 14/04/2023 at 23:24. Pushed by apol into branch 'master'. flatpak: Do not crash if for any reason we lack a ref's source (cherry picked from commit 2bed299745d7c56c53191e46a8affe89f19c0491) M +19 -7 libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp https://invent.kde.org/plasma/discover/commit/542f88c90fddd1974b0178a73decd5411ea52148 |
Created attachment 157600 [details] backtrace SUMMARY Sometimes discover "can't find flathub" and doesn't launch. `Could not find source: 0x7fffa001c240 "flathub"` (0x number probably doesn't matter) Very out of ordinary actually, randomly happens after an update is available from flathub. Even though I couldn't trigger intentionally(can't give virtual updates by myself), I highly guess it's related to nvidia flatpak updates as it regularly happens right after I get an nvidia update on system side. OBSERVED RESULT Discover crashes upon startup, before any gui is shown. EXPECTED RESULT Discover launched properly (obviously 😅) Maybe temporarily ignore the broken backend instead of crashing and warn the user about "unexpected issue with the flatpak backend: couldn't find flathub" without forcing the user to use command line. SOFTWARE/OS VERSIONS Linux: Fedora 37 kernel 6.2 KDE Plasma Version: 5.27.3 KDE Frameworks Version: 5.104.0 Qt Version: 5.15.8 ADDITIONAL INFORMATION Can be worked around by using gnome-software or flatpak cli, then discover no longer breaks. Can't trigger again until an update though, making it harder to reproduce. I got the backtrace in 5.27.2 but it's not introduced in that release nor fixed in .3, it's just that I couldn't get my way to report. Attached backtrace, my first bug report, hope it's useful (✿^‿^)