| Summary: | Assertion in AppStream::Component::KindFirmware when accessing programs installed with Discover | ||
|---|---|---|---|
| Product: | [Applications] Discover | Reporter: | contact |
| Component: | PackageKit | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | aleixpol, kdedev, matthias, nate |
| Priority: | NOR | Keywords: | drkonqi |
| Version First Reported In: | 6.4.5 | ||
| Target Milestone: | --- | ||
| Platform: | Neon | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/discover/-/commit/7b37cecb0a373658274f5ad1471f0864b9d6d503 | Version Fixed/Implemented In: | 6.5.2 |
| Sentry Crash Report: | |||
| Attachments: | New crash information added by DrKonqi | ||
|
Description
contact
2025-10-02 16:37:22 UTC
Created attachment 185460 [details]
New crash information added by DrKonqi
DrKonqi auto-attaching complete backtrace.
Translation: I don't remember if the crash started after adding/removing a particular program, but for a few weeks I can't access it at all. This is not blocking for daily use and the command line allows you to get the same answers although much less filtered. Searchable backtrace Thread 1 (Thread 0x7e78d2957240 (LWP 16366)): [KCrash Handler] #6 __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44 #7 __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78 #8 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #9 0x00007e78d884527e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #10 0x00007e78d88288ff in __GI_abort () at ./stdlib/abort.c:79 #11 0x00007e78d9272d32 in qAbort () at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/global/qassert.cpp:46 #12 qt_message_fatal<QString&> (message=..., context=...) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/global/qlogging.cpp:2149 #13 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=msg@entry=0x7e78d924b8d0 "ASSERT: \"%s\" in file %s, line %d", ap=ap@entry=0x7ffc59c12138) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/global/qlogging.cpp:381 #14 0x00007e78d9273b45 in QMessageLogger::fatal (this=<optimized out>, msg=0x7e78d924b8d0 "ASSERT: \"%s\" in file %s, line %d") at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/global/qlogging.cpp:883 #15 0x00007e78d925d779 in qt_assert (assertion=assertion@entry=0x7e78ac0974e0 "component.kind() != AppStream::Component::KindFirmware", file=file@entry=0x7e78ac097080 "./libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp", line=line@entry=384) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/global/qassert.cpp:105 #16 0x00007e78ac03f9a4 in PackageKitBackend::addComponent (this=0x62cd44485630, component=...) at /usr/src/plasma-discover-6.4.5-0zneon+24.04+noble+release+build41/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp:384 #17 0x00007e78ac05dd7f in PackageKitBackend::loadAllPackages (this=0x62cd44485630) at /usr/src/plasma-discover-6.4.5-0zneon+24.04+noble+release+build41/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp:1194 #18 0x00007e78ac056bd9 in operator() (__closure=0x62cd47e3b700, stream=0x62cd47e47970) at /usr/src/plasma-discover-6.4.5-0zneon+24.04+noble+release+build41/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp:714 #19 0x00007e78ac04ea6e in std::function<void (PKResultsStream*)>::operator()(PKResultsStream*) const (__args#0=<optimized out>, this=0x62cd47e47d90) at /usr/include/c++/13/bits/std_function.h:591 #20 operator()(_ZZN17PackageKitBackend20deferredResultStreamERK7QStringSt8functionIFvP15PKResultsStreamEEENKUlPS_8QPointerIS4_ES7_E_clES8_SA_S7_.Frame *) (frame_ptr=0x62cd47e47d30) at /usr/src/plasma-discover-6.4.5-0zneon+24.04+noble+release+build41/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp:689 #21 0x00007e78ac05e394 in std::__n4861::coroutine_handle<void>::resume (this=0x62cd47e48070) at /usr/include/c++/13/coroutine:135 #22 QCoro::detail::TaskFinalSuspend::await_suspend<QCoro::detail::TaskPromise<void> > (finishedCoroutine=..., this=0x62cd47e47ea8) at /usr/include/qcoro6/qcoro/impl/taskfinalsuspend.h:28 #23 QCoro::sleepFor(_ZN5QCoro8sleepForIlSt5ratioILl1ELl1000EEEENS_4TaskIvEERKNSt6chrono8durationIT_T0_EE.Frame *) (frame_ptr=0x62cd47e47e30) at /usr/include/qcoro6/qcoro/qcorotimer.h:64 #24 0x00007e78d9346e39 in QtPrivate::QSlotObjectBase::call (a=<optimized out>, r=<optimized out>, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/kernel/qobjectdefs_impl.h:461 #25 doActivate<false> (sender=0x62cd47e47e80, signal_index=3, argv=0x7ffc59c12950) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/kernel/qobject.cpp:4157 #26 0x00007e78d934cb7d in QMetaObject::activate<void, QTimer::QPrivateSignal> (ret=0x0, local_signal_index=0, mo=<optimized out>, sender=<optimized out>) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/kernel/qobjectdefs.h:306 #27 QTimer::timeout (this=<optimized out>, _t1=...) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/obj-x86_64-linux-gnu/src/corelib/Core_autogen/include/moc_qtimer.cpp:182 #28 0x00007e78d93394be in QObject::event (this=0x62cd47e47e80, e=0x7ffc59c12ae0) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/kernel/qobject.cpp:1407 #29 0x00007e78db4c7dcd in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x62cd47e47e80, e=0x7ffc59c12ae0) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/widgets/kernel/qapplication.cpp:3300 #30 0x00007e78d92e59c0 in QCoreApplication::notifyInternal2 (receiver=0x62cd47e47e80, event=0x7ffc59c12ae0) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/kernel/qcoreapplication.cpp:1106 #31 0x00007e78d946aab7 in QTimerInfoList::activateTimers (this=0x62cd43d31bd0) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/kernel/qtimerinfo_unix.cpp:426 #32 0x00007e78d955f4a9 in timerSourceDispatch (source=<optimized out>) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/kernel/qeventdispatcher_glib.cpp:152 #33 0x00007e78d7ccb5c5 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #34 0x00007e78d7d2a737 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #35 0x00007e78d7ccaa63 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #36 0x00007e78d955cb2f in QEventDispatcherGlib::processEvents (this=0x62cd43d37e00, flags=...) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/kernel/qeventdispatcher_glib.cpp:399 #37 0x00007e78d92edadb in QEventLoop::exec (this=0x7ffc59c12d50, flags=...) at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/global/qflags.h:77 #38 0x00007e78d92e817f in QCoreApplication::exec () at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/corelib/global/qflags.h:77 #39 0x00007e78d98debad in QGuiApplication::exec () at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/gui/kernel/qguiapplication.cpp:1986 #40 0x00007e78db4c3d19 in QApplication::exec () at /usr/src/qt6-base-6.9.2-0zneon+24.04+noble+release+build121/src/widgets/kernel/qapplication.cpp:2567 #41 0x000062cd42d20b32 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/plasma-discover-6.4.5-0zneon+24.04+noble+release+build41/discover/main.cpp:231 The backtrace looks very similar to bug 490786 , for a crash in the Flatpak backend, which was fixed Hm that other crash you mention is just another assertion but has not much to do.
Here we're seeing a call to load all packages and it seems like one of them it's a firmware. Normally firmwares are in fwupd so we'd need to understand if it's legitimate that there's firmwares here.
Testing with this extra information would help:
diff --git a/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp b/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp
index 2ac52e5d1..76036d136 100644
--- a/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp
+++ b/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp
@@ -393,6 +393,7 @@ AppPackageKitResource *PackageKitBackend::addComponent(const AppStream::Componen
{
const QStringList pkgNames = component.packageNames();
Q_ASSERT(!pkgNames.isEmpty());
+ qWarning() << "BOOM!" << component.id() << component.kind() << component.packageNames();
Q_ASSERT(component.kind() != AppStream::Component::KindFirmware);
auto appId = makeAppId(component.id());
Oh, there absolutely *will be* firmware components outside of fwupd. Fwupd primarily deals with flashed firmware, but there is also a ton of runtime firmware that is flashed, well, at runtime and distributed by the respective Linux distribution. Giving the OS a way to install packages containing it on-demand was one of the ultimate design goals of AppStream (same with drivers, although fortunately most of them are now in the kernel). You can read more at https://www.freedesktop.org/software/appstream/docs/sect-Metadata-Firmware.html From a quick check at Debian, Debian actually contains a ton of firmware components, and even more apps/components that expose modaliases to advertise enhanced hardware compatibility. I would expect these to be distributed with AppStream::Component::KindDriver. It's clearly a problem we are finding anyway and I guess there's little reason to get stuck with it. A possibly relevant merge request was started @ https://invent.kde.org/plasma/discover/-/merge_requests/1195 Hey, I'm thinking while reading your discussion about firmware packages. I have the same issue on both my work computer and personal. And on both I've installed VMWare. Because I use secure boot I remember manually sign kernel modules, plus VMWare installed a bunch of stuff. Could it be "the culprit" ? Don't judge me for using VMWare on Linux, I came from Windows recently haha @apol
> I would expect these to be distributed with AppStream::Component::KindDriver.
Not necessarily - the drivers are in the kernel (ideally), the firmware is external. And especially on OSes like Debian where non-free firmware is split out, having separate firmware packages makes sense (but it also makes sense in general, to keep the initramfs small).
@contact@hexteckgate.ovh It is possible that VMWare provides a driver component, but I'd be surprised if it provided metadata for a firmware component - so I think it's unrelated. Nothing wrong with VMWare, at least in the past, but nowadays it's unbelievably expensive, and having to install out-of-tree kernel modules is always a pain. Git commit 3246d814829331e49516cdaa1d6eae9cca85d840 by Aleix Pol Gonzalez, on behalf of Aleix Pol. Committed on 31/10/2025 at 00:42. Pushed by apol into branch 'master'. pk: Some distros distribute firmwares Allow for the components to be included and looked up under drivers. M +15 -7 libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp M +0 -2 libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp https://invent.kde.org/plasma/discover/-/commit/3246d814829331e49516cdaa1d6eae9cca85d840 Git commit 7b37cecb0a373658274f5ad1471f0864b9d6d503 by Aleix Pol. Committed on 31/10/2025 at 00:44. Pushed by apol into branch 'Plasma/6.5'. pk: Some distros distribute firmwares Allow for the components to be included and looked up under drivers. (cherry picked from commit 3246d814829331e49516cdaa1d6eae9cca85d840) M +15 -7 libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp M +0 -2 libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp https://invent.kde.org/plasma/discover/-/commit/7b37cecb0a373658274f5ad1471f0864b9d6d503 |