Created attachment 187432 [details] long backtrace SUMMARY I copied 11 GiB of data to a usb flash drive, safely removed the device via Disks & Devices applet and then Plasma crashed. Operating System: Arch Linux KDE Plasma Version: 6.5.3 KDE Frameworks Version: 6.20.0 Qt Version: 6.10.1 Graphics Platform: Wayland
Double delete of the file places item?
Thread 1 (Thread 0x7f3dd27fc6c0 (LWP 7704)): #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007f3e9be989d3 in __pthread_kill_internal (threadid=<optimized out>, signo=11) at pthread_kill.c:89 #2 0x00007f3e9be3e3a0 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26 #3 0x00007f3e9f2fde57 in KCrash::defaultCrashHandler (sig=11) at /usr/src/debug/kcrash/kcrash-6.20.0/src/kcrash.cpp:605 #4 0x00007f3e9be3e4d0 in <signal handler called> () at /usr/lib/libc.so.6 #5 0x00007f3e9f23aa15 in QExplicitlySharedDataPointer<Solid::DevicePrivate>::~QExplicitlySharedDataPointer (this=0x7f3e14072248, this=<optimized out>) at /usr/include/qt6/QtCore/qshareddata.h:150 #6 QExplicitlySharedDataPointer<Solid::DevicePrivate>::~QExplicitlySharedDataPointer (this=0x7f3e14072248, this=<optimized out>) at /usr/include/qt6/QtCore/qshareddata.h:150 #7 Solid::Device::~Device (this=this@entry=0x7f3e14072248, this=<optimized out>) at /usr/src/debug/solid/solid-6.20.0/src/solid/devices/frontend/device.cpp:55 #8 0x00007f3e94f13e9a in KFilePlacesItem::~KFilePlacesItem (this=0x7f3e14072200, this=<optimized out>) at /usr/src/debug/kio/kio-6.20.0/src/filewidgets/kfileplacesitem.cpp:96 #9 0x00007f3e94f1eed8 in KFilePlacesItem::~KFilePlacesItem (this=0x7f3e14072200, this=<optimized out>) at /usr/src/debug/kio/kio-6.20.0/src/filewidgets/kfileplacesitem.cpp:94 #10 KFilePlacesModelPrivate::reloadBookmarks (this=<optimized out>) at /usr/src/debug/kio/kio-6.20.0/src/filewidgets/kfileplacesmodel.cpp:811 #11 0x00007f3e9c7d734f in QtPrivate::QSlotObjectBase::call (this=0x7f3e14006850, r=0x7f3e1400ef20, a=0x7f3dd27fae00, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #12 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4257 #13 0x00007f3e9f2386a3 in QMetaObject::activate<void, QString> (sender=<optimized out>, mo=0x7f3e9f2e8a80 <Solid::DeviceNotifier::staticMetaObject>, local_signal_index=1, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs.h:319 #14 Solid::DeviceNotifier::deviceRemoved (this=<optimized out>, _t1=<optimized out>) at /usr/src/debug/solid/build/src/solid/KF6Solid_autogen/include/moc_devicenotifier.cpp:133 #15 0x00007f3e9c7d734f in QtPrivate::QSlotObjectBase::call (this=0x7f3e140036f0, r=0x7f3e1402c0c0, a=0x7f3dd27faf00, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #16 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4257 #17 0x00007f3e9f24ff03 in QMetaObject::activate<void, QString> (sender=<optimized out>, mo=<optimized out>, local_signal_index=1, ret=0x0, sender=<optimized out>, mo=<optimized out>, local_signal_index=<optimized out>, ret=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs.h:319 #18 Solid::Ifaces::DeviceManager::deviceRemoved (this=<optimized out>, _t1=<optimized out>) at /usr/src/debug/solid/build/src/solid/KF6Solid_autogen/include/moc_devicemanager.cpp:133 #19 0x00007f3e9f28aea7 in Solid::Backends::UDisks2::Manager::slotInterfacesRemoved (this=<optimized out>, object_path=<optimized out>, interfaces=<optimized out>) at /usr/src/debug/solid/solid-6.20.0/src/solid/devices/backends/udisks2/udisksmanager.cpp:291 #20 0x00007f3e9c7d734f in QtPrivate::QSlotObjectBase::call (this=0x7f3e140278d0, r=0x7f3e1402cb60, a=0x7f3dd27fb160, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #21 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4257 #22 0x00007f3e9f2ad59e in QMetaObject::activate<void, QDBusObjectPath, QList<QString> > (sender=0x7f3e1402cb78, mo=<optimized out>, local_signal_index=1, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs.h:319 #23 OrgFreedesktopDBusObjectManagerInterface::InterfacesRemoved (this=0x7f3e1402cb78, _t1=<optimized out>, _t2=<optimized out>) at /usr/src/debug/solid/build/src/solid/KF6Solid_autogen/include/moc_manager.cpp:164 #24 OrgFreedesktopDBusObjectManagerInterface::qt_static_metacall (_o=_o@entry=0x7f3e1402cb78, _c=_c@entry=QMetaObject::InvokeMetaMethod, _id=_id@entry=1, _a=_a@entry=0x7f3dd27fb308) at /usr/src/debug/solid/build/src/solid/KF6Solid_autogen/include/moc_manager.cpp:89 #25 0x00007f3e9f2b6a8a in OrgFreedesktopDBusObjectManagerInterface::qt_metacall (this=0x7f3e1402cb78, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7f3dd27fb308) at /usr/src/debug/solid/build/src/solid/KF6Solid_autogen/include/moc_manager.cpp:144 #26 0x00007f3e9d7f5b71 in QDBusConnectionPrivate::deliverCall (this=0x7f3e9000d7b0, object=0x7f3e1402cb78, msg=..., metaTypes=<optimized out>, slotIdx=6) at /usr/src/debug/qt6-base/qtbase/src/dbus/qdbusintegrator.cpp:1008 #27 0x00007f3e9c7c4994 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1413 #28 0x00007f3e9e9021c0 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x7f3e1402cb78, e=0x7f3e9007a8f0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3305 #29 0x00007f3e9c76a958 in QCoreApplication::notifyInternal2 (receiver=0x7f3e1402cb78, event=event@entry=0x7f3e9007a8f0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109 #30 0x00007f3e9c76ad30 in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x7f3e9007a8f0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1549 #31 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x559858d15400) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1904 #32 0x00007f3e9ca4ae18 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1757 #33 postEventSourceDispatch (s=0x7f3e1403c040) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246 #34 0x00007f3e9b277f8d in g_main_dispatch (context=0x7f3e1403be30) at ../glib/glib/gmain.c:3565 #35 0x00007f3e9b279657 in g_main_context_dispatch_unlocked (context=0x7f3e1403be30) at ../glib/glib/gmain.c:4425 #36 g_main_context_iterate_unlocked (context=context@entry=0x7f3e1403be30, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4490 #37 0x00007f3e9b279865 in g_main_context_iteration (context=0x7f3e1403be30, may_block=1) at ../glib/glib/gmain.c:4556 #38 0x00007f3e9ca48152 in QEventDispatcherGlib::processEvents (this=0x7f3e140028f0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399 #39 0x00007f3e9c775786 in QEventLoop::processEvents (this=0x7f3dd27fb980, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104 #40 QEventLoop::exec (this=0x7f3dd27fb980, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186 #41 0x00007f3e9c89041e in QThread::exec (this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread.cpp:672 #42 0x00007f3e9c92f899 in operator() (__closure=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:437 #43 (anonymous namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> > (t=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:367 #44 QThreadPrivate::start (arg=0x5598591609d0) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:397 #45 0x00007f3e9be9698b in start_thread (arg=<optimized out>) at pthread_create.c:448 #46 0x00007f3e9bf1a9cc in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
*** Bug 513603 has been marked as a duplicate of this bug. ***
Git commit 1348d32ca17e6b026c8925778939ea24ed63eaad by Nicolas Fella. Committed on 21/01/2026 at 10:48. Pushed by nicolasfella into branch 'master'. Use delete instead of deleteLater() when DevicePrivate refcount drops to 0 When the last interface of a udisk device is removed we emit deviceRemoved(), which results in setBackendObject(nullptr). There we deref the deviceprivate and delete if necessary. By using deleteLater() the deletion is delayed, which can cause issues where the Device accesses an already deleted DevicePrivate. By using delete instead we make sure that the DevicePrivate is immediately deleted and removed from m_devicesMap Remove an assert in DeviceManager since dev may already be deleted now Related: bug 513508, bug 494224, bug 470321, bug 513921 M +1 -1 src/solid/devices/frontend/device.cpp M +0 -1 src/solid/devices/frontend/devicemanager.cpp https://invent.kde.org/frameworks/solid/-/commit/1348d32ca17e6b026c8925778939ea24ed63eaad