STEPS TO REPRODUCE 1. Run in qmlscene: import QtQuick import org.kde.ksvg as KSvg //NOTE: importing PlasmaCore is necessary in order to make KSvg load the current Plasma Theme import org.kde.plasma.core as PlasmaCore Item { id: root KSvg.Svg { id: radioButtonSvg imagePath: "widgets/radiobutton" } Loader { anchors.fill: parent sourceComponent: radioButtonSvg.fromCurrentImageSet ? radiobuttonComponent : compatibilityComponent } Component { id: radiobuttonComponent KSvg.SvgItem { svg: radioButtonSvg elementId: "normal" KSvg.SvgItem { svg: radioButtonSvg elementId: "shadow" } } } Component { id: compatibilityComponent Item {} } } 2. Go to systemsettings > Plasma Style 3. Change from Breeze to e.g. ArcDusk-dark (from the store) OBSERVED RESULT #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007fffef09a2e3 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:78 #2 0x00007fffef0414b6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007fffef02891a in __GI_abort () at abort.c:79 #4 0x00007fffef9aca94 in qAbort () at /home/nico/workspace/qt6-dev/qtbase/src/corelib/global/qassert.cpp:46 #5 0x00007fffefa04866 in qt_message_fatal<QString&> (context=..., message=...) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/global/qlogging.cpp:2116 #6 0x00007fffefa05c63 in qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=msg@entry=0x7ffff04e8440 "ASSERT failure in %s: \"%s\", file %s, line %d", ap=ap@entry=0x7fffebb35c20) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/global/qlogging.cpp:382 #7 0x00007fffefa1447f in QMessageLogger::fatal (this=this@entry=0x7fffeb96fa20, msg=msg@entry=0x7ffff04e8440 "ASSERT failure in %s: \"%s\", file %s, line %d") at /home/nico/workspace/qt6-dev/qtbase/src/corelib/global/qlogging.cpp:884 #8 0x00007fffef9acd73 in qt_assert_x (where=<optimized out>, what=0x7fffd598ec00 "Called object is not of the correct type (class destructor may have already run)", file=0x7fffd598eba0 "/home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h", line=105) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/global/qassert.cpp:114 #9 0x00007fffd59528e8 in QtPrivate::assertObjectType<KSvg::SvgItem> (o=0x5120000acfc0) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:105 #10 0x00007fffd59526e6 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (KSvg::SvgItem::*)()>::call(void (KSvg::SvgItem::*)(), KSvg::SvgItem*, void**) (f=(void (KSvg::SvgItem::*)(class KSvg::SvgItem * const)) 0x7fffd594b92e <KSvg::SvgItem::updateNeeded()>, o=0x5120000acfc0, arg=0x7fffebb35720) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:125 #11 0x00007fffd59524a8 in QtPrivate::FunctionPointer<void (KSvg::SvgItem::*)()>::call<QtPrivate::List<>, void>(void (KSvg::SvgItem::*)(), KSvg::SvgItem*, void**) (f=(void (KSvg::SvgItem::*)(class KSvg::SvgItem * const)) 0x7fffd594b92e <KSvg::SvgItem::updateNeeded()>, o=0x5120000acfc0, arg=0x7fffebb35720) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:174 #12 0x00007fffd5952268 in QtPrivate::QCallableObject<void (KSvg::SvgItem::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x503000120700, r=0x5120000acfc0, a=0x7fffebb35720, ret=0x0) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:545 #13 0x00007fffefcbe8dc in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x5120000acfc0, a=0x7fffebb35720) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #14 doActivate<false> (sender=sender@entry=0x51100011ea80, signal_index=<optimized out>, argv=<optimized out>, argv@entry=0x0) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:4127 #15 0x00007fffefc9d68c in QMetaObject::activate (sender=0x51100011ea80, m=<optimized out>, local_signal_index=0, argv=0x0) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:4187 #16 0x00007fffd4318ea7 in KSvg::Svg::repaintNeeded (this=0x51100011ea80) at /home/nico/kde-qtdev/build/ksvg/src/ksvg/KF6Svg_autogen/include/moc_svg.cpp:823 #17 0x00007fffd4315d03 in KSvg::Svg::clearColorOverrides (this=0x51100011ea80) at /home/nico/kde-qtdev/src/ksvg/src/ksvg/svg.cpp:1153 #18 0x00007fffd5949156 in operator() (__closure=0x503000122900) at /home/nico/kde-qtdev/src/ksvg/src/declarativeimports/svgitem.cpp:60 #19 0x00007fffd594deac in operator() (__closure=0x7fffeb96f340) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:116 #20 0x00007fffd594e1c7 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, KSvg::SvgItem::componentComplete()::<lambda()> >::call(KSvg::SvgItem::componentComplete()::<lambda()>&, void**)::<lambda()> >(void **, struct {...} &&) (args=0x7fffebb35320, fn=...) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:65 #21 0x00007fffd594dfb2 in QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, KSvg::SvgItem::componentComplete()::<lambda()> >::call(struct {...} &, void **) (f=..., arg=Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0xffffffffffffffc0 #22 0x00007fffd594de35 in QtPrivate::FunctorCallable<KSvg::SvgItem::componentComplete()::<lambda()> >::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x7fffebb35320) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:337 #23 0x00007fffd594dd57 in QtPrivate::QCallableObject<KSvg::SvgItem::componentComplete()::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x5030001228f0, r=0x5120000ad140, a=0x7fffebb35320, ret=0x0) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:547 #24 0x00007fffefcbe8dc in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x5120000ad140, a=0x7fffebb35320) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #25 doActivate<false> (sender=sender@entry=0x50400012a850, signal_index=<optimized out>, argv=<optimized out>, argv@entry=0x0) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:4127 #26 0x00007fffefc9d68c in QMetaObject::activate (sender=0x50400012a850, m=<optimized out>, local_signal_index=0, argv=0x0) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:4187 #27 0x00007fffe12c704f in Kirigami::Platform::PlatformTheme::colorsChanged (this=0x50400012a850) at /home/nico/kde-qtdev/build/kirigami/src/platform/KirigamiPlatform_autogen/include/moc_platformtheme.cpp:675 #28 0x00007fffe12c149c in Kirigami::Platform::PlatformTheme::emitSignalsForChanges (this=0x50400012a850, changes=63) at /home/nico/kde-qtdev/src/kirigami/src/platform/platformtheme.cpp:892 #29 0x00007fffe12c34b9 in Kirigami::Platform::PlatformThemeChangeTracker::~PlatformThemeChangeTracker (this=0x7fffebae0fa0, __in_chrg=<optimized out>) at /home/nico/kde-qtdev/src/kirigami/src/platform/platformtheme.cpp:1070 #30 0x00007fffe12c1d0a in Kirigami::Platform::PlatformTheme::event (this=0x50400012a850, event=0x7fffebb343a0) at /home/nico/kde-qtdev/src/kirigami/src/platform/platformtheme.cpp:954 #31 0x00007fffce7ba45a in PlasmaDesktopTheme::event (this=0x50400012a850, event=0x7fffebb343a0) at /home/nico/kde-qtdev/src/qqc2-desktop-style/kirigami-plasmadesktop-integration/plasmadesktoptheme.cpp:336 #32 0x00007ffff627aaae in QApplicationPrivate::notify_helper (this=this@entry=0x515000002380, receiver=receiver@entry=0x50400012a850, e=e@entry=0x7fffebb343a0) at /home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:3294 #33 0x00007ffff6296959 in QApplication::notify (this=0x502000001590, receiver=<optimized out>, e=<optimized out>) at /home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:3245 #34 0x00007fffefba3a0a in QCoreApplication::notifyInternal2 (receiver=0x50400012a850, event=<optimized out>) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1124 #35 0x00007fffefba3b7d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1568 #36 0x00007fffe12c2b7d in Kirigami::Platform::PlatformTheme::update (this=0x50400012a850) at /home/nico/kde-qtdev/src/kirigami/src/platform/platformtheme.cpp:1011 #37 0x00007fffe12e3257 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (Kirigami::Platform::PlatformTheme::*)()>::call(void (Kirigami::Platform::PlatformTheme::*)(), Kirigami::Platform::PlatformTheme*, void**)::{lambda()#1}::operator()() const (__closure=0x7fffebae0c80) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:127 #38 0x00007fffe12e520d in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (Kirigami::Platform::PlatformTheme::*)()>::call(void (Kirigami::Platform::PlatformTheme::*)(), Kirigami::Platform::PlatformTheme*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (Kirigami::Platform::PlatformTheme::*)()>::call(void (Kirigami::Platform::PlatformTheme::*)(), Kirigami::Platform::PlatformTheme*, void**)::{lambda()#1}&&) (args=0x7fffeb96dd40, fn=...) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:65 #39 0x00007fffe12e340f in QtPrivate::FunctorCall<std::integer_sequence<unsigned long>, QtPrivate::List<>, void, void (Kirigami::Platform::PlatformTheme::*)()>::call(void (Kirigami::Platform::PlatformTheme::*)(), Kirigami::Platform::PlatformTheme*, void**) (f=(void (Kirigami::Platform::PlatformTheme::*)(class Kirigami::Platform::PlatformTheme * const)) 0x7fffe12c1d70 <Kirigami::Platform::PlatformTheme::update()>, o=0x50400012a850, arg=0x7fffeb96dd40) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:126 #40 0x00007fffe12dfdfc in QtPrivate::FunctionPointer<void (Kirigami::Platform::PlatformTheme::*)()>::call<QtPrivate::List<>, void>(void (Kirigami::Platform::PlatformTheme::*)(), Kirigami::Platform::PlatformTheme*, void**) (f=(void (Kirigami::Platform::PlatformTheme::*)(class Kirigami::Platform::PlatformTheme * const)) 0x7fffe12c1d70 <Kirigami::Platform::PlatformTheme::update()>, o=0x50400012a850, arg=0x7fffeb96dd40) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:174 #41 0x00007fffe12dc31a in QtPrivate::QCallableObject<void (Kirigami::Platform::PlatformTheme::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x5030001209a0, r=0x50400012a850, a=0x7fffeb96dd40, ret=0x0) at /home/nico/kde-qtdev/usr/include/QtCore/qobjectdefs_impl.h:545 #42 0x00007fffefcbe8dc in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x50400012a850, a=0x7fffeb96dd40) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461 #43 doActivate<false> (sender=sender@entry=0x5120000ad140, signal_index=<optimized out>, argv=<optimized out>, argv@entry=0x7fffeb96dd40) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:4127 #44 0x00007fffefc9d68c in QMetaObject::activate (sender=sender@entry=0x5120000ad140, m=m@entry=0x7ffff5d872e0 <QQuickItem::staticMetaObject>, local_signal_index=local_signal_index@entry=7, argv=argv@entry=0x7fffeb96dd40) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:4187 #45 0x00007ffff4dab6cd in QQuickItem::parentChanged (this=this@entry=0x5120000ad140, _t1=0x0) at /home/nico/workspace/qt6-dev/qtdeclarative/src/quick/Quick_autogen/include/moc_qquickitem.cpp:1741 #46 0x00007ffff4df1567 in QQuickItem::setParentItem (this=0x5120000ad140, parentItem=parentItem@entry=0x0) at /home/nico/workspace/qt6-dev/qtdeclarative/src/quick/items/qquickitem.cpp:2868 #47 0x00007ffff4df1a99 in QQuickItem::~QQuickItem (this=0x5120000acfc0, __in_chrg=<optimized out>) at /home/nico/workspace/qt6-dev/qtdeclarative/src/quick/items/qquickitem.cpp:2390 --Type <RET> for more, q to quit, c to continue without paging--c #48 0x00007fffd5948bc5 in KSvg::SvgItem::~SvgItem (this=0x5120000acfc0, __in_chrg=<optimized out>) at /home/nico/kde-qtdev/src/ksvg/src/declarativeimports/svgitem.cpp:40 #49 0x00007fffd5947e13 in QQmlPrivate::QQmlElement<KSvg::SvgItem>::~QQmlElement (this=0x5120000acfc0, __in_chrg=<optimized out>) at /home/nico/kde-qtdev/usr/include/QtQml/qqmlprivate.h:104 #50 0x00007fffd5947e38 in QQmlPrivate::QQmlElement<KSvg::SvgItem>::~QQmlElement (this=0x5120000acfc0, __in_chrg=<optimized out>) at /home/nico/kde-qtdev/usr/include/QtQml/qqmlprivate.h:104 #51 0x00007fffefca31f1 in QObject::event (this=this@entry=0x5120000acfc0, e=e@entry=0x503000156430) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qobject.cpp:1405 #52 0x00007ffff4e053a4 in QQuickItem::event (this=0x5120000acfc0, ev=0x503000156430) at /home/nico/workspace/qt6-dev/qtdeclarative/src/quick/items/qquickitem.cpp:9163 #53 0x00007ffff627aaae in QApplicationPrivate::notify_helper (this=this@entry=0x515000002380, receiver=receiver@entry=0x5120000acfc0, e=e@entry=0x503000156430) at /home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:3294 #54 0x00007ffff6296959 in QApplication::notify (this=0x502000001590, receiver=<optimized out>, e=<optimized out>) at /home/nico/workspace/qt6-dev/qtbase/src/widgets/kernel/qapplication.cpp:3245 #55 0x00007fffefba3a0a in QCoreApplication::notifyInternal2 (receiver=0x5120000acfc0, event=event@entry=0x503000156430) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1124 #56 0x00007fffefba3b7d in QCoreApplication::sendEvent (receiver=receiver@entry=0x5120000acfc0, event=event@entry=0x503000156430) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1568 #57 0x00007fffefba6bf7 in QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x50e000000900) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1923 #58 0x00007fffefba7315 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1755 #59 0x00007ffff04074fa in postEventSourceDispatch (s=0x50b00003f020) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246 #60 0x00007ffff2510eb8 in g_main_dispatch (context=0x5110000101c0) at ../glib/gmain.c:3357 #61 g_main_context_dispatch_unlocked (context=context@entry=0x5110000101c0) at ../glib/gmain.c:4208 #62 0x00007ffff2512ca8 in g_main_context_iterate_unlocked (context=context@entry=0x5110000101c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4273 #63 0x00007ffff25134bc in g_main_context_iteration (context=0x5110000101c0, may_block=1) at ../glib/gmain.c:4338 #64 0x00007ffff04057b7 in QEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399 #65 0x00007ffff1d81a5c in QPAEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at /home/nico/workspace/qt6-dev/qtbase/src/gui/platform/unix/qeventdispatcher_glib.cpp:89 #66 0x00007fffefbc4fc2 in QEventLoop::processEvents (this=this@entry=0x7fffeba8d940, flags=...) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventloop.cpp:103 #67 0x00007fffefbc7209 in QEventLoop::exec (this=this@entry=0x7fffeba8d940, flags=...) at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qeventloop.cpp:194 #68 0x00007fffefbae892 in QCoreApplication::exec () at /home/nico/workspace/qt6-dev/qtbase/src/corelib/kernel/qcoreapplication.cpp:1469 #69 0x00007ffff0e26686 in QGuiApplication::exec () at /home/nico/workspace/qt6-dev/qtbase/src/gui/kernel/qguiapplication.cpp:1975 #70 0x0000555555567bf6 in main (argc=<optimized out>, argv=<optimized out>) at /home/nico/workspace/qt6-dev/qtdeclarative/tools/qmlscene/main.cpp:639 SOFTWARE/OS VERSIONS KDE Plasma Version: master KDE Frameworks Version: master Qt Version: dev ADDITIONAL INFORMATION
Git commit 6664daab1d3d980b4cb8ab427eb18fb70c9dfd4c by Christoph Cullmann, on behalf of Marco Martin. Committed on 08/12/2024 at 22:39. Pushed by cullmann into branch 'master'. Disconnect signals on destruction Make sure to not call anything on m_svg when this is shutting down Kirigami::PlatformTheme will lose its window at that point so will emit colorschanged, which we shouldn't react to during destructor. This fixes an assert Related: bug 493921 M +4 -0 src/declarativeimports/svgitem.cpp https://invent.kde.org/frameworks/ksvg/-/commit/6664daab1d3d980b4cb8ab427eb18fb70c9dfd4c