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 (✿^‿^)
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