Bug 445921

Summary: Crash when removing weather applet with a bbcukmet or envcanada source
Product: [Plasma] kdeplasma-addons Reporter: Bharadwaj Raju <bharadwaj.raju777>
Component: WeatherAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED DUPLICATE    
Severity: crash CC: nate
Priority: NOR    
Version: master   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Backtrace

Description Bharadwaj Raju 2021-11-22 13:53:10 UTC
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
Comment 1 Nate Graham 2021-11-23 17:45:08 UTC
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>
Comment 2 Nate Graham 2021-11-23 17:45:40 UTC
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
Comment 3 Bharadwaj Raju 2021-11-23 18:06:13 UTC
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
Comment 4 Bharadwaj Raju 2021-11-25 10:11:19 UTC
Happens with envcanada too while testing. Looks like it does have to do with extra info given by some providers and not others.
Comment 5 Nate Graham 2023-08-21 17:29:06 UTC

*** This bug has been marked as a duplicate of bug 449981 ***