I can reliably reproduce the failed assertion with my new device listing code now (not committed yet). My guess is that in order to reproduce it you need to plug in a device that will add more than one Solid::Device object to the tree, i.e. you get multiple calls to deviceAdded, and then in the slot iterate over all devices, i.e. access the devices that will be announced with another deviceAdded later on. Application: KDE Daemon (kded4), signal SIGABRT 0x00007fd91836cb50 in __nanosleep_nocancel () from /lib/libc.so.6 Thread 1 (Thread 0x7fd91d10d780 (LWP 14939)): [KCrash Handler] #5 0x00007fd918301095 in raise () from /lib/libc.so.6 #6 0x00007fd918302af0 in abort () from /lib/libc.so.6 #7 0x00007fd91b6cce1d in qt_message_output (msgType=QtFatalMsg, buf=0x7fff2513fa50 "ASSERT: \"dev->backendObject()==0\" in file /home/mkretz/KDE/src/kdelibs/solid/solid/devicemanager.cpp, line 164") at /home/mkretz/KDE/src/qt-copy/src/corelib/global/qglobal.cpp:2061 #8 0x00007fd91b6ccf3f in qFatal (msg=0x7fd91b849340 "ASSERT: \"%s\" in file %s, line %d") at /home/mkretz/KDE/src/qt-copy/src/corelib/global/qglobal.cpp:2263 #9 0x00007fd91b6cd3ad in qt_assert (assertion=0x7fd9179df25f "dev->backendObject()==0", file=0x7fd9179df2b0 "/home/mkretz/KDE/src/kdelibs/solid/solid/devicemanager.cpp", line=164) at /home/mkretz/KDE/src/qt-copy/src/corelib/global/qglobal.cpp:1831 #10 0x00007fd9179a60f3 in Solid::DeviceManagerPrivate::_k_deviceAdded (this=0x8f0e20, udi=@0x962d50) at /home/mkretz/KDE/src/kdelibs/solid/solid/devicemanager.cpp:164 #11 0x00007fd9179a61e3 in Solid::DeviceManagerPrivate::qt_metacall (this=0x8f0e20, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff25141d60) at /home/mkretz/KDE/obj/kdelibs/solid/solid/devicemanager_p.moc:72 #12 0x00007fd91b7fe04b in QMetaObject::activate (sender=0x8f0e70, from_signal_index=4, to_signal_index=4, argv=0x7fff25141d60) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qobject.cpp:3016 #13 0x00007fd91b7fe5d1 in QMetaObject::activate (sender=0x8f0e70, m=0x7fd917bfa040, local_signal_index=0, argv=0x7fff25141d60) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qobject.cpp:3086 #14 0x00007fd9179b3d44 in Solid::Ifaces::DeviceManager::deviceAdded (this=0x3a5b, _t1=) at /home/mkretz/KDE/obj/kdelibs/solid/solid/ifaces/devicemanager.moc:79 #15 0x00007fd9179d3647 in Solid::Backends::Hal::HalManager::qt_metacall (this=0x8f0e70, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff25141f90) at /home/mkretz/KDE/obj/kdelibs/solid/solid/backends/hal/halmanager.moc:70 #16 0x00007fd91bb431bb in QDBusConnectionPrivate::deliverCall (this=0x7ca130, object=0x8f0e70, msg=@0xa14468, metaTypes=@0xa14470, slotIdx=6) at /home/mkretz/KDE/src/qt-copy/src/dbus/qdbusintegrator.cpp:865 #17 0x00007fd91bb4f20f in QDBusCallDeliveryEvent::placeMetaCall (this=0xa14420, object=0x8f0e70) at /home/mkretz/KDE/src/qt-copy/src/dbus/qdbusintegrator_p.h:136 #18 0x00007fd91b7fbcce in QObject::event (this=0x8f0e70, e=0xa14420) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qobject.cpp:1140 #19 0x00007fd918f7495b in QApplicationPrivate::notify_helper (this=0x632010, receiver=0x8f0e70, e=0xa14420) at /home/mkretz/KDE/src/qt-copy/src/gui/kernel/qapplication.cpp:3805 #20 0x00007fd918f74c65 in QApplication::notify (this=0x7fff25142cb0, receiver=0x8f0e70, e=0xa14420) at /home/mkretz/KDE/src/qt-copy/src/gui/kernel/qapplication.cpp:3397 #21 0x00007fd91c4527b6 in KApplication::notify (this=0x7fff25142cb0, receiver=0x8f0e70, event=0xa14420) at /home/mkretz/KDE/src/kdelibs/kdeui/kernel/kapplication.cpp:311 #22 0x00007fd91b7e5e51 in QCoreApplication::notifyInternal (this=0x7fff25142cb0, receiver=0x8f0e70, event=0xa14420) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qcoreapplication.cpp:591 #23 0x00007fd91b7ea4e9 in QCoreApplication::sendEvent (receiver=0x8f0e70, event=0xa14420) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qcoreapplication.h:215 #24 0x00007fd91b7e645d in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x603360) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qcoreapplication.cpp:1202 #25 0x00007fd91b7e6728 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qcoreapplication.cpp:1095 #26 0x00007fd91b81ca41 in QCoreApplication::sendPostedEvents () at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qcoreapplication.h:220 #27 0x00007fd91b81bc5b in postEventSourceDispatch (s=0x634220) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qeventdispatcher_glib.cpp:211 #28 0x00007fd9160913d4 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #29 0x00007fd9160946e5 in ?? () from /usr/lib/libglib-2.0.so.0 #30 0x00007fd916094bcb in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #31 0x00007fd91b81ade4 in QEventDispatcherGlib::processEvents (this=0x631f80, flags=@0x7fff25142ab0) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qeventdispatcher_glib.cpp:325 #32 0x00007fd91902cdf3 in QGuiEventDispatcherGlib::processEvents (this=0x631f80, flags=@0x7fff25142b10) at /home/mkretz/KDE/src/qt-copy/src/gui/kernel/qguieventdispatcher_glib.cpp:204 #33 0x00007fd91b7e28a4 in QEventLoop::processEvents (this=0x7fff25142bd0, flags=@0x7fff25142b90) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qeventloop.cpp:149 #34 0x00007fd91b7e2aa0 in QEventLoop::exec (this=0x7fff25142bd0, flags=@0x7fff25142bf0) at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qeventloop.cpp:200 #35 0x00007fd91b7e6833 in QCoreApplication::exec () at /home/mkretz/KDE/src/qt-copy/src/corelib/kernel/qcoreapplication.cpp:849 #36 0x00007fd918f746c0 in QApplication::exec () at /home/mkretz/KDE/src/qt-copy/src/gui/kernel/qapplication.cpp:3335 #37 0x00007fd91cd1daae in kdemain (argc=1, argv=0x7fff251431c8) at /home/mkretz/KDE/src/kdelibs/kded/kded.cpp:896 #38 0x00007fd9182ed1c4 in __libc_start_main () from /lib/libc.so.6 #39 0x0000000000400779 in _start ()