Bug 472892 - Plasma::Applet::removeInternalAction triggers infinite recursion and crashes plasmashell when closing the first "undo removing this widget" notification
Summary: Plasma::Applet::removeInternalAction triggers infinite recursion and crashes ...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Containment (other bugs)
Version First Reported In: master
Platform: Other Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: qt6
: 472098 (view as bug list)
Depends on:
Blocks:
 
Reported: 2023-08-01 20:14 UTC by Nate Graham
Modified: 2023-08-02 21:17 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.0
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Graham 2023-08-01 20:14:08 UTC
STEPS TO REPRODUCE
1. Reboot
2. Add a widget to the desktop
3. Remove the widget via any means
4. Click the close button on the "Undo removing this widget" notification


OBSERVED RESULT
Plasma crashes:

#0  0x00007f61083cb864 in operator<(QString const&, QString const&) (s2=<optimized out>, s1=...)
    at /usr/include/qt6/QtCore/qstringview.h:137
#1  std::less<QString>::operator()(QString const&, QString const&) const
    (__y=<optimized out>, __x=..., this=<optimized out>)
    at /usr/include/c++/13/bits/stl_function.h:408
#2  std::_Rb_tree<QString, std::pair<QString const, QAction*>, std::_Select1st<std::pair<QString const, QAction*> >, std::less<QString>, std::allocator<std::pair<QString const, QAction*> > >::_M_lower_bound(std::_Rb_tree_node<std::pair<QString const, QAction*> > const*, std::_Rb_tree_node_base const*, QString const&) const (this=0xcb26a8, __k=<optimized out>, __y=<optimized out>, __x=0x5875710)
    at /usr/include/c++/13/bits/stl_tree.h:1968
#3  std::_Rb_tree<QString, std::pair<QString const, QAction*>, std::_Select1st<std::pair<QString const, QAction*> >, std::less<QString>, std::allocator<std::pair<QString const, QAction*> > >::find(QString const&) const (this=0xcb26a8, __k=<optimized out>) at /usr/include/c++/13/bits/stl_tree.h:2545
#4  0x00007f61080ade81 in std::map<QString, QAction*, std::less<QString>, std::allocator<std::pair<QString const, QAction*> > >::find(QString const&) const (__x=..., this=0xcb26a8)
    at /usr/include/c++/13/bits/stl_map.h:1244
#5  QMap<QString, QAction*>::value(QString const&, QAction* const&) const
    (defaultValue=<optimized out>, key=..., this=0x5e03e98) at /usr/include/qt6/QtCore/qmap.h:360
#6  Plasma::Applet::removeInternalAction(QString const&) (this=0x5af7fb0, name=...)
    at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:672
#7  0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4a1d0, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#8  doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4a1d0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#9  0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4a1d0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#10 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#11 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#12 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#13 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#14 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4a480, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#15 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4a480)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#16 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4a480)
--Type <RET> for more, q to quit, c to continue without paging--c
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#17 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#18 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#19 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#20 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#21 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4a730, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#22 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4a730)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#23 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4a730)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#24 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#25 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#26 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#27 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#28 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4a9e0, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#29 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4a9e0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#30 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4a9e0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#31 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#32 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#33 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#34 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#35 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4ac90, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#36 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4ac90)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#37 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4ac90)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#38 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#39 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#40 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#41 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#42 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4af40, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#43 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4af40)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#44 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4af40)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#45 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#46 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#47 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#48 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#49 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4b1f0, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#50 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4b1f0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#51 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4b1f0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#52 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#53 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#54 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#55 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#56 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4b4a0, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#57 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4b4a0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#58 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4b4a0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#59 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#60 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#61 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#62 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#63 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4b750, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#64 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4b750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#65 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4b750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#66 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#67 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#68 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#69 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#70 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4ba00, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#71 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4ba00)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#72 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4ba00)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#73 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#74 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#75 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#76 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#77 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4bcb0, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#78 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4bcb0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#79 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4bcb0)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#80 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#81 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#82 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#83 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#84 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4bf60, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#85 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4bf60)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#86 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4bf60)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#87 0x00007f6104bd4811 in QObject::destroyed(QObject*)
    (this=this@entry=0x57e4750, _t1=<optimized out>, _t1@entry=0x57e4750)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/redhat-linux-build/src/corelib/kernel/moc_qobject.cpp:266
#88 0x00007f6104bdb5b2 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1014
#89 0x00007f6104bdbc25 in QObject::~QObject() (this=0x57e4750, __in_chrg=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1121
#90 0x00007f61080adea9 in Plasma::Applet::removeInternalAction(QString const&)
    (this=0x5af7fb0, name=...) at /home/nate/kde/src/plasma-framework/src/plasma/applet.cpp:675
#91 0x00007f6104bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6be4c210, r=0x5af7fb0, this=0x5803700)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#92 doActivate<false>(QObject*, int, void**) (sender=0x57e4750, signal_index=0, argv=0x7ffe6be4c210)
    at /usr/src/debug/qt6-qtbase-6.5.1-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#93 0x00007f6104bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x57e4750, m=m@entry=0x7f61050042a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe6be4c210)

And the backtrace just keeps going like this forever; there seems to be infinite recursion being triggered via Plasma::Applet::removeInternalAction.


EXPECTED RESULT
Plasma doesn't crash
Comment 1 Nate Graham 2023-08-01 20:26:51 UTC
Looks to be fixed already by https://invent.kde.org/frameworks/plasma-framework/-/merge_requests/837!
Comment 2 Fushan Wen 2023-08-02 01:13:39 UTC
Git commit cd5e4ab9cdec8c610ed8e01df01ff488966dfa4e by Fushan Wen.
Committed on 02/08/2023 at 03:13.
Pushed by fusionfuture into branch 'master'.

Applet: fix crash after a widget is removed or disabled

In the connection with `QObject::destroyed`, there is no need to delete
an action again, otherwise there is a double delete.
FIXED-IN: 6.0

M  +3    -1    src/plasma/applet.cpp

https://invent.kde.org/frameworks/plasma-framework/-/commit/cd5e4ab9cdec8c610ed8e01df01ff488966dfa4e
Comment 3 Nate Graham 2023-08-02 21:17:51 UTC
*** Bug 472098 has been marked as a duplicate of this bug. ***