| Summary: | Apps periodically crash in Solid::DeviceNotifier::deviceAdded() when making devices available | ||
|---|---|---|---|
| Product: | [Frameworks and Libraries] frameworks-solid | Reporter: | Alexey Min <alexey.min> |
| Component: | general | Assignee: | Unassigned bugs <unassigned-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | anandshaurya, christoph, dnd.united, dolphin-bugs-null, equeim, giecrilj, kdedev, kdelibs-bugs-null, lukas, nate, nicolas.fella, RyougaLolakieIV, sergiu, yedaya.ka |
| Priority: | HI | Keywords: | drkonqi |
| Version First Reported In: | 5.106.0 | ||
| Target Milestone: | --- | ||
| Platform: | Gentoo Packages | ||
| OS: | Linux | ||
| See Also: | https://bugs.kde.org/show_bug.cgi?id=513089 | ||
| Latest Commit: | https://invent.kde.org/frameworks/solid/-/commit/1348d32ca17e6b026c8925778939ea24ed63eaad | Version Fixed/Implemented In: | 6.23 |
| Sentry Crash Report: | |||
*** Bug 474794 has been marked as a duplicate of this bug. *** *** Bug 479885 has been marked as a duplicate of this bug. *** *** Bug 440427 has been marked as a duplicate of this bug. *** *** Bug 510246 has been marked as a duplicate of this bug. *** *** Bug 512226 has been marked as a duplicate of this bug. *** *** Bug 513968 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 513089, 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 *** Bug 515767 has been marked as a duplicate of this bug. *** |
Application: dolphin (22.12.3) Qt Version: 5.15.9 Frameworks Version: 5.106.0 Operating System: Linux 6.3.2-gentoo x86_64 Windowing System: X11 Distribution: "Gentoo Linux" DrKonqi: 5.27.5 [KCrashBackend] -- Information about the crash: I was running postmarketOS bootstrap tool (pmbootstrap) and it creates filesystem images by creating loop devices, mounting them, formatting, copying files and umounting. I suppose bug is somewhere in solid in device enumeration? The reporter is unsure if this crash is reproducible. -- Backtrace: Application: Dolphin (dolphin), signal: Segmentation fault Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = 0x0} [KCrash Handler] #6 std::__atomic_base<int>::load (__m=std::memory_order_relaxed, this=0x21) at /usr/lib/gcc/x86_64-pc-linux-gnu/12/include/g++-v12/bits/atomic_base.h:486 #7 QAtomicOps<int>::loadRelaxed<int> (_q_value=<error reading variable: Cannot access memory at address 0x21>) at /usr/include/qt5/QtCore/qatomic_cxx11.h:239 #8 QBasicAtomicInteger<int>::loadRelaxed (this=0x21) at /usr/include/qt5/QtCore/qbasicatomic.h:107 #9 QtPrivate::RefCount::ref (this=0x21) at /usr/include/qt5/QtCore/qrefcount.h:55 #10 QString::QString (other=..., this=this@entry=0x7ffcc8da6b80) at /usr/include/qt5/QtCore/qstring.h:1094 #11 Solid::DevicePrivate::udi (this=0x557814437890) at /usr/src/debug/kde-frameworks/solid-5.106.0/solid-5.106.0/src/solid/devices/frontend/device_p.h:32 #12 Solid::Device::udi (this=this@entry=0x55781364a230) at /usr/src/debug/kde-frameworks/solid-5.106.0/solid-5.106.0/src/solid/devices/frontend/device.cpp:70 #13 0x00007f32751830a8 in KFilePlacesItem::updateDeviceInfo (this=this@entry=0x55781364a200, udi=...) at /usr/src/debug/kde-frameworks/kio-5.106.0/kio-5.106.0/src/filewidgets/kfileplacesitem.cpp:461 #14 0x00007f327518394d in KFilePlacesItem::setBookmark (this=this@entry=0x55781364a200, bookmark=...) at /usr/src/debug/kde-frameworks/kio-5.106.0/kio-5.106.0/src/filewidgets/kfileplacesitem.cpp:161 #15 0x00007f327518d460 in KFilePlacesModelPrivate::reloadBookmarks (this=this@entry=0x557812aea470) at /usr/src/debug/kde-frameworks/kio-5.106.0/kio-5.106.0/src/filewidgets/kfileplacesmodel.cpp:842 #16 0x00007f327518eca4 in KFilePlacesModelPrivate::deviceAdded (udi=..., this=0x557812aea470) at /usr/src/debug/kde-frameworks/kio-5.106.0/kio-5.106.0/src/filewidgets/kfileplacesmodel.cpp:783 #17 operator() (device=..., __closure=<optimized out>) at /usr/src/debug/kde-frameworks/kio-5.106.0/kio-5.106.0/src/filewidgets/kfileplacesmodel.cpp:761 #18 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<const QString&>, void, KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)> >::call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146 #19 QtPrivate::Functor<KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)>, 1>::call<QtPrivate::List<QString const&>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256 #20 QtPrivate::QFunctorSlotObject<KFilePlacesModelPrivate::initDeviceList()::<lambda(const QString&)>, 1, QtPrivate::List<const QString&>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443 #21 0x00007f32731adaa3 in QtPrivate::QSlotObjectBase::call (this=0x557812ac8610, r=0x557812abb260, a=0x7ffcc8da6eb0) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #22 0x00007f32731ef3b7 in doActivate<false> (sender=0x557812af4ce0, signal_index=3, argv=0x7ffcc8da6eb0) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qobject.cpp:3923 #23 0x00007f32731e8a7d in QMetaObject::activate (sender=0x557812af4ce0, m=0x7f3274b90ca0 <Solid::DeviceNotifier::staticMetaObject>, local_signal_index=0, argv=0x7ffcc8da6eb0) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qobject.cpp:3983 #24 0x00007f3274af9af2 in Solid::DeviceNotifier::deviceAdded (this=<optimized out>, _t1=...) at /usr/src/debug/kde-frameworks/solid-5.106.0/solid-5.106.0_build/src/solid/KF5Solid_autogen/include/moc_devicenotifier.cpp:144 #25 0x00007f32731ef465 in doActivate<false> (sender=0x557812b17090, signal_index=3, argv=0x7ffcc8da7030) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qobject.cpp:3935 #26 0x00007f32731e8a7d in QMetaObject::activate (sender=0x557812b17090, m=0x7f3274b90480 <Solid::Ifaces::DeviceManager::staticMetaObject>, local_signal_index=0, argv=0x7ffcc8da7030) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qobject.cpp:3983 #27 0x00007f3274ae6e22 in Solid::Ifaces::DeviceManager::deviceAdded (this=this@entry=0x557812b17090, _t1=...) at /usr/src/debug/kde-frameworks/solid-5.106.0/solid-5.106.0_build/src/solid/KF5Solid_autogen/3PYKXLVNWF/moc_devicemanager.cpp:144 #28 0x00007f3274b269f9 in Solid::Backends::UDisks2::Manager::slotInterfacesAdded (this=0x557812b17090, object_path=..., interfaces_and_properties=...) at /usr/src/debug/kde-frameworks/solid-5.106.0/solid-5.106.0/src/solid/devices/backends/udisks2/udisksmanager.cpp:210 #29 0x00007f32731ef465 in doActivate<false> (sender=0x557812b170a8, signal_index=3, argv=0x7ffcc8da72b0) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qobject.cpp:3935 #30 0x00007f32731e8a7d in QMetaObject::activate (sender=0x557812b170a8, m=0x7f3274b90980 <OrgFreedesktopDBusObjectManagerInterface::staticMetaObject>, local_signal_index=0, argv=0x7ffcc8da72b0) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qobject.cpp:3983 #31 0x00007f3274aed884 in OrgFreedesktopDBusObjectManagerInterface::InterfacesAdded (_t2=..., _t1=..., this=<optimized out>) at /usr/src/debug/kde-frameworks/solid-5.106.0/solid-5.106.0_build/src/solid/KF5Solid_autogen/W35TJJ7QHF/moc_manager.cpp:182 #32 OrgFreedesktopDBusObjectManagerInterface::qt_static_metacall (_o=_o@entry=0x557812b170a8, _c=_c@entry=QMetaObject::InvokeMetaMethod, _id=_id@entry=0, _a=_a@entry=0x7ffcc8da7400) at /usr/src/debug/kde-frameworks/solid-5.106.0/solid-5.106.0_build/src/solid/KF5Solid_autogen/W35TJJ7QHF/moc_manager.cpp:93 #33 0x00007f3274af2b03 in OrgFreedesktopDBusObjectManagerInterface::qt_metacall (this=0x557812b170a8, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7ffcc8da7400) at /usr/src/debug/kde-frameworks/solid-5.106.0/solid-5.106.0_build/src/solid/KF5Solid_autogen/W35TJJ7QHF/moc_manager.cpp:168 #34 0x00007f32742927fb in QDBusConnectionPrivate::deliverCall (this=<optimized out>, object=<optimized out>, msg=..., metaTypes=..., slotIdx=<optimized out>) at /usr/src/debug/dev-qt/qtdbus-5.15.9/qtbase-everywhere-src-5.15.9/include/QtCore/../../src/corelib/tools/qvarlengtharray.h:189 #35 0x00007f32731e20c5 in QObject::event (this=0x557812b170a8, e=0x7f326804e310) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qobject.cpp:1347 #36 0x00007f3273cd002e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x557812b170a8, e=0x7f326804e310) at /usr/src/debug/dev-qt/qtwidgets-5.15.9/qtbase-everywhere-src-5.15.9/src/widgets/kernel/qapplication.cpp:3640 #37 0x00007f327319c411 in QCoreApplication::notifyInternal2 (receiver=0x557812b170a8, event=0x7f326804e310) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qcoreapplication.cpp:1064 #38 0x00007f327319ce1c in QCoreApplication::sendEvent (receiver=0x557812b170a8, event=0x7f326804e310) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qcoreapplication.cpp:1462 #39 0x00007f327319dae7 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x557812907d40) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qcoreapplication.cpp:1821 #40 0x00007f327319d49a in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qcoreapplication.cpp:1680 #41 0x00007f3273230f31 in postEventSourceDispatch (s=0x557812a48ac0) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qeventdispatcher_glib.cpp:277 #42 0x00007f3270da032c in g_main_dispatch (context=0x7f3268000ee0) at ../glib-2.76.2/glib/gmain.c:3460 #43 0x00007f3270da137a in g_main_context_dispatch (context=0x7f3268000ee0) at ../glib-2.76.2/glib/gmain.c:4200 #44 0x00007f3270da157c in g_main_context_iterate (context=0x7f3268000ee0, block=1, dispatch=1, self=0x557812a517a0) at ../glib-2.76.2/glib/gmain.c:4276 #45 0x00007f3270da1654 in g_main_context_iteration (context=0x7f3268000ee0, may_block=1) at ../glib-2.76.2/glib/gmain.c:4343 #46 0x00007f32732316ad in QEventDispatcherGlib::processEvents (this=0x557812a50760, flags=...) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qeventdispatcher_glib.cpp:423 #47 0x00007f3273198e15 in QEventLoop::processEvents (this=0x7ffcc8da7a20, flags=...) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qeventloop.cpp:142 #48 0x00007f327319912b in QEventLoop::exec (this=0x7ffcc8da7a20, flags=...) at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qeventloop.cpp:235 #49 0x00007f327319cc59 in QCoreApplication::exec () at /usr/src/debug/dev-qt/qtcore-5.15.9/qtbase-everywhere-src-5.15.9/src/corelib/kernel/qcoreapplication.cpp:1375 #50 0x00007f32736a05ac in QGuiApplication::exec () at /usr/src/debug/dev-qt/qtgui-5.15.9/qtbase-everywhere-src-5.15.9/src/gui/kernel/qguiapplication.cpp:1870 #51 0x00007f3273ccffa5 in QApplication::exec () at /usr/src/debug/dev-qt/qtwidgets-5.15.9/qtbase-everywhere-src-5.15.9/src/widgets/kernel/qapplication.cpp:2832 #52 0x00005578121d1142 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kde-apps/dolphin-22.12.3/dolphin-22.12.3/src/main.cpp:258 [Inferior 1 (process 663288) detached] The reporter indicates this bug may be a duplicate of or related to bug 460402, bug 469110. Reported using DrKonqi