Created attachment 143835 [details] Backtrace SUMMARY When removing a weather applet set to a bbcukmet source, Plasma crashes. This doesn't happen with other sources (I only tested wettercom source so far). Backtrace attached. STEPS TO REPRODUCE 1. Add a weather applet 2. Set source to something from bbcukmet 3. Remove applet 4. Close the "Applet removed" notification SOFTWARE/OS VERSIONS KDE Plasma Version: Plasma 5.23.80 KDE Frameworks Version: 5.89 Qt Version: 5.15.3 Distro: Neon Unstable
Pasting inline for searchability: Thread 1 (Thread 0x7f8efa1de4c0 (LWP 3248)): #0 __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:50 set = {__val = {0, 0, 0, 0, 0, 0, 553581723040, 140252123415161, 140252084502528, 140720644030464, 140252123144720, 605464897783190528, 0, 140252162221615, 1256, 0}} pid = <optimized out> tid = <optimized out> #1 0x00007f8f004eeff5 in KCrash::defaultCrashHandler(int) () at /lib/x86_64-linux-gnu/libKF5Crash.so.5 #2 0x00007f8efdfaa210 in <signal handler called> () at /lib/x86_64-linux-gnu/libc.so.6 #3 0x00007f8f000c1faa in QQuickItem::~QQuickItem() (this=0x55d6f6bdeb90, __in_chrg=<optimized out>) at items/qquickitem.cpp:2320 d = <optimized out> #4 0x00007f8edc3c398b in () at /usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so #5 0x00007f8edc3c0f15 in () at /usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so #6 0x00007f8f000bac2a in QQuickItemPrivate::itemChange(QQuickItem::ItemChange, QQuickItem::ItemChangeData const&) (this=this@entry=0x55d6f3a63890, change=change@entry=QQuickItem::ItemVisibleHasChanged, data=...) at items/qquickitem.cpp:6318 change = @0x55d6f9e62758: {listener = 0x55d6edfea050, types = {i = 790}, gTypes = {kind = 15}} __for_range = {{listener = 0x55d6edfea050, types = {i = 790}, gTypes = {kind = 15}}} __for_begin = 0x55d6f9e62758 __for_end = 0x55d6f9e62768 listeners = {{listener = 0x55d6edfea050, types = {i = 790}, gTypes = {kind = 15}}} q = 0x55d6f6bc93a0 #7 0x00007f8f000bb1c3 in QQuickItemPrivate::setEffectiveVisibleRecur(bool) (this=0x55d6f3a63890, newEffectiveVisible=<optimized out>) at items/qquickitem.h:188 q = <optimized out> childVisibilityChanged = false #8 0x00007f8f000bb0df in QQuickItemPrivate::setEffectiveVisibleRecur(bool) (this=0x7f8eb812fa40, newEffectiveVisible=<optimized out>) at items/qquickitem.h:468 ii = <optimized out> q = <optimized out> childVisibilityChanged = false #9 0x00007f8f000bb0df in QQuickItemPrivate::setEffectiveVisibleRecur(bool) (this=this@entry=0x55d6f6cb6c50, newEffectiveVisible=<optimized out>) at items/qquickitem.h:468 ii = <optimized out> q = <optimized out> childVisibilityChanged = false #10 0x00007f8f000c113d in QQuickItem::setParentItem(QQuickItem*) (this=this@entry=0x55d6f6bdeba0, parentItem=parentItem@entry=0x0) at items/qquickitem.cpp:2726 d = 0x55d6f6cb6c50 oldParentItem = <optimized out> scopeFocusedItem = <optimized out> parentWindow = <optimized out> alreadyAddedChild = <optimized out> #11 0x00007f8f000c1fdc in QQuickItem::~QQuickItem() (this=0x55d6f6bdeba0, __in_chrg=<optimized out>) at items/qquickitem.cpp:2327 d = 0x55d6f6cb6c50 #12 0x00007f8edc3c020b in () at /usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so #13 0x00007f8edc3c8315 in () at /usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so #14 0x00007f8f009d7aec in PlasmaQuick::AppletQuickItem::~AppletQuickItem() () at /lib/x86_64-linux-gnu/libKF5PlasmaQuick.so.5 #15 0x00007f8ef81d3b0d in AppletInterface::~AppletInterface() (this=0x55d6f6fa3ae0, __in_chrg=<optimized out>) at ./src/scriptengines/qml/plasmoid/appletinterface.cpp:124 #16 0x00007f8efe6173ce in QObjectPrivate::deleteChildren() (this=0x55d6f6e5c3b0) at kernel/qobject.cpp:2104 i = <optimized out> #17 0x00007f8efe621df6 in QObject::~QObject() (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qobject.cpp:1082 d = <optimized out> sharedRefcount = <optimized out> cd = 0x55d6f39e5650 #18 0x00007f8ef81cea08 in DeclarativeAppletScript::~DeclarativeAppletScript() (this=0x55d6f2e1e150, __in_chrg=<optimized out>) at ./src/scriptengines/qml/plasmoid/declarativeappletscript.cpp:56 #19 DeclarativeAppletScript::~DeclarativeAppletScript() (this=0x55d6f2e1e150, __in_chrg=<optimized out>) at ./src/scriptengines/qml/plasmoid/declarativeappletscript.cpp:58 #20 0x00007f8f006e4108 in () at /lib/x86_64-linux-gnu/libKF5Plasma.so.5 #21 0x00007f8f006e430d in () at /lib/x86_64-linux-gnu/libKF5Plasma.so.5 #22 0x00007f8f006cc1ce in Plasma::Applet::~Applet() () at /lib/x86_64-linux-gnu/libKF5Plasma.so.5 #23 0x00007f8ef81b3c1d in WeatherApplet::~WeatherApplet() (this=0x55d6ee002670, __in_chrg=<optimized out>) at ./applets/weather/weatherapplet.cpp:186 #24 0x00007f8efe61a6e3 in QObject::event(QEvent*) (this=0x55d6ee002670, e=0x55d6f6b93770) at kernel/qobject.cpp:1301 #25 0x00007f8eff2fedc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x55d6edb1b730, receiver=receiver@entry=0x55d6ee002670, e=e@entry=0x55d6f6b93770) at kernel/qapplication.cpp:3632 consumed = false filtered = false #26 0x00007f8eff307bb8 in QApplication::notify(QObject*, QEvent*) (this=0x7ffce40acf20, receiver=0x55d6ee002670, e=0x55d6f6b93770) at kernel/qapplication.cpp:3156 w = <optimized out> wheel = <optimized out> spontaneous = <optimized out> phase = <optimized out> d = 0x55d6edb1b730 res = false #27 0x00007f8efe5ecdaa in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55d6ee002670, event=0x55d6f6b93770) at ../../include/QtCore/5.15.3/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325 selfRequired = true result = false cbdata = {0x55d6ee002670, 0x55d6f6b93770, 0x7ffce40acb2f} d = <optimized out> threadData = 0x55d6edaf4ef0 scopeLevelCounter = {threadData = 0x55d6edaf4ef0} #28 0x00007f8efe5ef6b1 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x55d6edaf4ef0) at kernel/qcoreapplication.cpp:1821 e = 0x55d6f6b93770 pe = <optimized out> r = 0x55d6ee002670 event_deleter = {d = 0x55d6f6b93770} locker = {_M_device = 0x55d6edaf4f20, _M_owns = false} startOffset = 0 i = @0x55d6edaf4f14: 2 cleanup = {receiver = 0x0, event_type = 0, data = 0x55d6edaf4ef0, exceptionCaught = true} #29 0x00007f8efe647fa7 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55d6edbbe420) at kernel/qeventdispatcher_glib.cpp:277 source = 0x55d6edbbe420 #30 0x00007f8efc92317d in g_main_dispatch (context=0x7f8ef4005000) at ../../../glib/gmain.c:3309 dispatch = 0x7f8efe647f90 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)> prev_source = 0x0 was_in_call = 0 user_data = 0x0 callback = 0x0 cb_funcs = 0x0 cb_data = <optimized out> need_destroy = <optimized out> source = 0x55d6edbbe420 current = 0x55d6edfc9a80 i = 0 __func__ = "g_main_dispatch" #31 g_main_context_dispatch (context=context@entry=0x7f8ef4005000) at ../../../glib/gmain.c:3974 #32 0x00007f8efc923400 in g_main_context_iterate (context=context@entry=0x7f8ef4005000, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4047 max_priority = 0 timeout = 0 some_ready = 1 nfds = <optimized out> allocated_nfds = <optimized out> fds = 0x55d6f01cb4f0 #33 0x00007f8efc9234a3 in g_main_context_iteration (context=0x7f8ef4005000, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108 retval = <optimized out> #34 0x00007f8efe647602 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55d6edbc61a0, flags=...) at kernel/qeventdispatcher_glib.cpp:423 d = 0x55d6edbc6200 canWait = true savedFlags = {i = 0} result = <optimized out> #35 0x00007f8efe5eb8ab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffce40ace00, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141 d = 0x55d6ede95fc0 threadData = <optimized out> locker = {val = 94381599159976} app = <optimized out> #36 0x00007f8efe5f3a64 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 threadData = 0x55d6edaf4ef0 eventLoop = {<QObject> = {_vptr.QObject = 0x7f8efe888268 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f8efe7bd960 <qt_meta_stringdata_QObject>, data = 0x7f8efe7bd840 <qt_meta_data_QObject>, static_metacall = 0x7f8efe622410 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x55d6ede95fc0}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f8efe7c0900 <qt_meta_stringdata_Qt>, data = 0x7f8efe7bda80 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7f8efe87fae0 <QObject::staticMetaObject>}, stringdata = 0x7f8efe7b8180 <qt_meta_stringdata_QEventLoop>, data = 0x7f8efe7b8120 <qt_meta_data_QEventLoop>, static_metacall = 0x7f8efe5eb5c0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} returnCode = <optimized out> #37 0x000055d6ecf96dd5 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at ./shell/main.cpp:238 qpaVariable = <optimized out> app = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x7f8eff8103a8 <vtable for QApplication+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f8efe7bd960 <qt_meta_stringdata_QObject>, data = 0x7f8efe7bd840 <qt_meta_data_QObject>, static_metacall = 0x7f8efe622410 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x55d6edb1b730}, static staticQtMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f8efe7c0900 <qt_meta_stringdata_Qt>, data = 0x7f8efe7bda80 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7f8efe87fae0 <QObject::staticMetaObject>}, stringdata = 0x7f8efe7b8840 <qt_meta_stringdata_QCoreApplication>, data = 0x7f8efe7b8720 <qt_meta_data_QCoreApplication>, static_metacall = 0x7f8efe5ee6f0 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7ffce40acf20}, static staticMetaObject = {d = {superdata = {direct = 0x7f8efe888400 <QCoreApplication::staticMetaObject>}, stringdata = 0x7f8efee41800 <qt_meta_stringdata_QGuiApplication>, data = 0x7f8efee41580 <qt_meta_data_QGuiApplication>, static_metacall = 0x7f8efe9cb960 <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0x7f8efef3f460 <QGuiApplication::staticMetaObject>}, stringdata = 0x7f8eff6b4b40 <qt_meta_stringdata_QApplication>, data = 0x7f8eff6b49c0 <qt_meta_data_QApplication>, static_metacall = 0x7f8eff304b70 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} aboutData = {static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7f8eff110960, data = 0x7f8eff110860, static_metacall = 0x7f8eff0a0d90, relatedMetaObjects = 0x0, extradata = 0x0}}, d = std::unique_ptr<class KAboutDataPrivate> = {get() = 0x55d6edbf8f90}} replace = false corona = 0x55d6edf857e0 service = <incomplete type>
Crashing in the destructor?: #14 0x00007f8f009d7aec in PlasmaQuick::AppletQuickItem::~AppletQuickItem() () at /lib/x86_64-linux-gnu/libKF5PlasmaQuick.so.5 #15 0x00007f8ef81d3b0d in AppletInterface::~AppletInterface() (this=0x55d6f6fa3ae0, __in_chrg=<optimized out>) at ./src/scriptengines/qml/plasmoid/appletinterface.cpp:124 #16 0x00007f8efe6173ce in QObjectPrivate::deleteChildren() (this=0x55d6f6e5c3b0) at kernel/qobject.cpp:2104 i = <optimized out> #17 0x00007f8efe621df6 in QObject::~QObject() (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qobject.cpp:1082 d = <optimized out> sharedRefcount = <optimized out> cd = 0x55d6f39e5650 #18 0x00007f8ef81cea08 in DeclarativeAppletScript::~DeclarativeAppletScript() (this=0x55d6f2e1e150, __in_chrg=<optimized out>) at ./src/scriptengines/qml/plasmoid/declarativeappletscript.cpp:56 #19 DeclarativeAppletScript::~DeclarativeAppletScript() (this=0x55d6f2e1e150, __in_chrg=<optimized out>) at ./src/scriptengines/qml/plasmoid/declarativeappletscript.cpp:58 #20 0x00007f8f006e4108 in () at /lib/x86_64-linux-gnu/libKF5Plasma.so.5 #21 0x00007f8f006e430d in () at /lib/x86_64-linux-gnu/libKF5Plasma.so.5 #22 0x00007f8f006cc1ce in Plasma::Applet::~Applet() () at /lib/x86_64-linux-gnu/libKF5Plasma.so.5 #23 0x00007f8ef81b3c1d in WeatherApplet::~WeatherApplet() (this=0x55d6ee002670, __in_chrg=<optimized out>) at ./applets/weather/weatherapplet.cpp:186
Yeah, in the destructor. I haven't figured out why it's only happening with the bbcukmet source, especially since the dataengine lives separately from the applet code. Possible guesses: bbcukmet provides some things like wind speed/direction which the other source I tested doesn't, so maybe something is happening when those SVGs are destroyed? or something else to do with extra info provided by one source but not the other. will have to test more
Happens with envcanada too while testing. Looks like it does have to do with extra info given by some providers and not others.
*** This bug has been marked as a duplicate of bug 449981 ***