Bug 494003 - Disabling some applets (plasmoids) crashes plasmashell
Summary: Disabling some applets (plasmoids) crashes plasmashell
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: System Tray widget (show other bugs)
Version: master
Platform: openSUSE Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2024-10-02 22:59 UTC by Mike
Modified: 2024-10-04 15:18 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.3.0
Sentry Crash Report:


Attachments
plasmashell kcrash (112.76 KB, text/vnd.kde.kcrash-report)
2024-10-02 22:59 UTC, Mike
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mike 2024-10-02 22:59:18 UTC
Created attachment 174344 [details]
plasmashell kcrash

SUMMARY
Disabling a plasmoid thru the "Entries" crashes plasmashell.  It appears to be a recursive stop/start dance that is eventually causing a segfault.

STEPS TO REPRODUCE
1.  Configure system tray
2.  Goto "Entries"
3.  Find a plasmoid (Printers, Audio Volume, Disks, Camera, etc) and then choose the disable option
4.  Click OK or Apply

OBSERVED RESULT
Eventually and range overflow will occur and crash/restart plasmashell

EXPECTED RESULT
The plasmoid would be disabled and plasmashell would not crash

SOFTWARE/OS VERSIONS
Operating System: openSUSE Tumbleweed 20241001
KDE Plasma Version: 6.1.90
KDE Frameworks Version: 6.7.0
Qt Version: 6.7.3
Kernel Version: 6.12.0-rc1-2.gcf987b0-default (64-bit)
Graphics Platform: Wayland
Processors: 12 × AMD Ryzen 5 1600 Six-Core Processor
Memory: 15.5 GiB of RAM
Graphics Processor: AMD Radeon RX 460 Graphics


ADDITIONAL INFORMATION
I noticed this first when on QT6.7.2, so I don't think it's the recent QT update from Tumbleweed.  A clue might also be that the plasmoids that fail seem to have at least two or more models.

https://crash-reports.kde.org/organizations/kde/issues/71043/?project=9
Comment 1 TraceyC 2024-10-03 00:19:24 UTC
Backtrace

Thread 1 (Thread 0x71eac25eca40 (LWP 4037)):
[KCrash Handler]
#5  0x000071eac78b1a3c in _int_free (av=0x71eac79f6ac0 <main_arena>, p=p@entry=0x584093c9d5e0, have_lock=have_lock@entry=0) at malloc.c:4499
#6  0x000071eac78b45ce in __GI___libc_free (mem=0x584093c9d5f0) at malloc.c:3398
#7  0x000071eaca15ba26 in QArrayDataPointer<char>::~QArrayDataPointer (this=0x584091068068, __in_chrg=<optimized out>) at /usr/include/qt6/QtCore/qarraydatapointer.h:110
#8  0x000071eaca157e1a in QByteArray::~QByteArray (this=0x584091068068, __in_chrg=<optimized out>) at /usr/include/qt6/QtCore/qbytearray.h:580
#9  0x000071eaca15ac6c in KEntry::~KEntry (this=0x584091068068, __in_chrg=<optimized out>) at /home/natalie/kde/src/kconfig/src/core/kconfigdata_p.h:22
#10 0x000071eaca16fda4 in std::pair<KEntryKey const, KEntry>::~pair (this=0x584091068030, __in_chrg=<optimized out>) at /usr/include/c++/14.2.1/bits/stl_pair.h:284
#11 0x000071eaca16fdcb in std::destroy_at<std::pair<KEntryKey const, KEntry> > (__location=0x584091068030) at /usr/include/c++/14.2.1/bits/stl_construct.h:88
#12 0x000071eaca16883c in std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<KEntryKey const, KEntry> > > >::destroy<std::pair<KEntryKey const, KEntry> > (__a=..., __p=0x584091068030) at /usr/include/c++/14.2.1/bits/alloc_traits.h:556
#13 std::_Rb_tree<KEntryKey, std::pair<KEntryKey const, KEntry>, std::_Select1st<std::pair<KEntryKey const, KEntry> >, KEntryKeyCompare, std::allocator<std::pair<KEntryKey const, KEntry> > >::_M_destroy_node (this=0x584083cbeff0, __p=0x584091068010) at /usr/include/c++/14.2.1/bits/stl_tree.h:621
#14 0x000071eaca163b8d in std::_Rb_tree<KEntryKey, std::pair<KEntryKey const, KEntry>, std::_Select1st<std::pair<KEntryKey const, KEntry> >, KEntryKeyCompare, std::allocator<std::pair<KEntryKey const, KEntry> > >::_M_drop_node (this=0x584083cbeff0, __p=0x584091068010) at /usr/include/c++/14.2.1/bits/stl_tree.h:629
#15 0x000071eaca15fbc3 in std::_Rb_tree<KEntryKey, std::pair<KEntryKey const, KEntry>, std::_Select1st<std::pair<KEntryKey const, KEntry> >, KEntryKeyCompare, std::allocator<std::pair<KEntryKey const, KEntry> > >::_M_erase (this=0x584083cbeff0, __x=0x584091068010) at /usr/include/c++/14.2.1/bits/stl_tree.h:1934
#16 0x000071eaca15fba0 in std::_Rb_tree<KEntryKey, std::pair<KEntryKey const, KEntry>, std::_Select1st<std::pair<KEntryKey const, KEntry> >, KEntryKeyCompare, std::allocator<std::pair<KEntryKey const, KEntry> > >::_M_erase (this=0x584083cbeff0, __x=0x584093cc8050) at /usr/include/c++/14.2.1/bits/stl_tree.h:1932
#17 0x000071eaca15fba0 in std::_Rb_tree<KEntryKey, std::pair<KEntryKey const, KEntry>, std::_Select1st<std::pair<KEntryKey const, KEntry> >, KEntryKeyCompare, std::allocator<std::pair<KEntryKey const, KEntry> > >::_M_erase (this=0x584083cbeff0, __x=0x584093c5ed30) at /usr/include/c++/14.2.1/bits/stl_tree.h:1932
#18 0x000071eaca15fba0 in std::_Rb_tree<KEntryKey, std::pair<KEntryKey const, KEntry>, std::_Select1st<std::pair<KEntryKey const, KEntry> >, KEntryKeyCompare, std::allocator<std::pair<KEntryKey const, KEntry> > >::_M_erase (this=0x584083cbeff0, __x=0x584093cbfdb0) at /usr/include/c++/14.2.1/bits/stl_tree.h:1932
#19 0x000071eaca16276e in std::_Rb_tree<KEntryKey, std::pair<KEntryKey const, KEntry>, std::_Select1st<std::pair<KEntryKey const, KEntry> >, KEntryKeyCompare, std::allocator<std::pair<KEntryKey const, KEntry> > >::clear (this=0x584083cbeff0) at /usr/include/c++/14.2.1/bits/stl_tree.h:1251
#20 0x000071eaca15e76c in std::map<KEntryKey, KEntry, KEntryKeyCompare, std::allocator<std::pair<KEntryKey const, KEntry> > >::clear (this=0x584083cbeff0) at /usr/include/c++/14.2.1/bits/stl_map.h:1183
#21 0x000071eaca154272 in KConfig::reparseConfiguration (this=0x584083d18f40) at /home/natalie/kde/src/kconfig/src/core/kconfig.cpp:659
#22 0x000071eaca1a6382 in KCoreConfigSkeleton::load (this=0x584084059e70) at /home/natalie/kde/src/kconfig/src/core/kcoreconfigskeleton.cpp:1293
#23 0x000071eacb0745f5 in Plasma::Applet::configChanged (this=0x584084047740) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:804
#24 0x000071eacb0babae in Plasma::AppletPrivate::propagateConfigChanged (this=0x584083ff5a10) at /home/natalie/kde/src/libplasma/src/plasma/private/applet_p.cpp:413
#25 0x000071eacb07511e in Plasma::Applet::qt_static_metacall (_o=0x584084047740, _c=QMetaObject::InvokeMetaMethod, _id=35, _a=0x7ffeabd8f2f8) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_applet.cpp:526
#26 0x000071eac7fa35ea in ??? () at /usr/lib/libQt6Core.so.6
#27 0x000071eaca1a82eb in KCoreConfigSkeleton::configChanged (this=0x584084059e70) at /home/natalie/kde/build/kconfig/src/core/KF6ConfigCore_autogen/include/moc_kcoreconfigskeleton.cpp:162
#28 0x000071eaca1a6695 in KCoreConfigSkeleton::save (this=0x584084059e70) at /home/natalie/kde/src/kconfig/src/core/kcoreconfigskeleton.cpp:1334
#29 0x000071eac02055a5 in SystemTraySettings::writeConfigValue (this=0x584084052550, key=..., value=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:137
#30 0x000071eac0204d41 in SystemTraySettings::removeKnownPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:51
#31 0x000071eac020522c in SystemTraySettings::cleanupPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:95
#32 0x000071eac01c36f8 in operator()<Plasma::Applet*> (__closure=0x584083ca0300, applet=0x584093ba8ac0) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:70
#33 0x000071eac01c41ab in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Plasma::Applet*>, void, SystemTray::init()::<lambda(auto:52)> >::call(struct {...} &, void **) (f=..., arg=0x7ffeabd8f700) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#34 0x000071eac01c405f in QtPrivate::FunctorCallable<SystemTray::init()::<lambda(auto:52)>, Plasma::Applet*>::call<QtPrivate::List<Plasma::Applet*>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffeabd8f700) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#35 0x000071eac01c3eab in QtPrivate::QCallableObject<SystemTray::init()::<lambda(auto:52)>, QtPrivate::List<Plasma::Applet*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x584083ca02f0, r=0x584084047740, a=0x7ffeabd8f700, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555
#36 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#37 0x000071eacb08c2c2 in Plasma::Containment::appletRemoved (this=0x584084047740, _t1=0x584093ba8ac0) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:743
#38 0x000071eacb0bff43 in Plasma::ContainmentPrivate::appletDeleted (this=0x58408404a420, applet=0x584093ba8ac0) at /home/natalie/kde/src/libplasma/src/plasma/private/containment_p.cpp:213
#39 0x000071eacb08ae73 in Plasma::Containment::qt_static_metacall (_o=0x584084047740, _c=QMetaObject::InvokeMetaMethod, _id=26, _a=0x7ffeabd8f8f0) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:403
#40 0x000071eac7fa35ea in ??? () at /usr/lib/libQt6Core.so.6
#41 0x000071eacb0769ba in Plasma::Applet::appletDeleted (this=0x584093ba8ac0, _t1=0x584093ba8ac0) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_applet.cpp:927
#42 0x000071eacb071271 in Plasma::Applet::~Applet (this=0x584093ba8ac0, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:72
#43 0x000071eacb071352 in Plasma::Applet::~Applet (this=0x584093ba8ac0, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:85
#44 0x000071eac01c2c6a in SystemTray::onEnabledAppletsChanged (this=0x584084047740) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:366
#45 0x000071eac01cdb90 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SystemTray::*)()>::call(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd8fc40) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:145
#46 0x000071eac01cc2b8 in QtPrivate::FunctionPointer<void (SystemTray::*)()>::call<QtPrivate::List<>, void>(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd8fc40) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:182
#47 0x000071eac01ca9c7 in QtPrivate::QCallableObject<void (SystemTray::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x584083ddb950, r=0x584084047740, a=0x7ffeabd8fc40, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:553
#48 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#49 0x000071eac01e2649 in SystemTraySettings::enabledPluginsChanged (this=0x584084052550, _t1=..., _t2=...) at /home/natalie/kde/build/plasma-workspace/applets/systemtray/systemtray_static_autogen/EWIEGA46WW/moc_systemtraysettings.cpp:162
#50 0x000071eac020501d in SystemTraySettings::removeEnabledPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:75
#51 0x000071eac020523f in SystemTraySettings::cleanupPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:96
#52 0x000071eac01c36f8 in operator()<Plasma::Applet*> (__closure=0x584083ca0300, applet=0x584093745b10) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:70
#53 0x000071eac01c41ab in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Plasma::Applet*>, void, SystemTray::init()::<lambda(auto:52)> >::call(struct {...} &, void **) (f=..., arg=0x7ffeabd8ffa0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#54 0x000071eac01c405f in QtPrivate::FunctorCallable<SystemTray::init()::<lambda(auto:52)>, Plasma::Applet*>::call<QtPrivate::List<Plasma::Applet*>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffeabd8ffa0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#55 0x000071eac01c3eab in QtPrivate::QCallableObject<SystemTray::init()::<lambda(auto:52)>, QtPrivate::List<Plasma::Applet*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x584083ca02f0, r=0x584084047740, a=0x7ffeabd8ffa0, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555
#56 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#57 0x000071eacb08c2c2 in Plasma::Containment::appletRemoved (this=0x584084047740, _t1=0x584093745b10) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:743
#58 0x000071eacb0bff43 in Plasma::ContainmentPrivate::appletDeleted (this=0x58408404a420, applet=0x584093745b10) at /home/natalie/kde/src/libplasma/src/plasma/private/containment_p.cpp:213
#59 0x000071eacb08ae73 in Plasma::Containment::qt_static_metacall (_o=0x584084047740, _c=QMetaObject::InvokeMetaMethod, _id=26, _a=0x7ffeabd90190) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:403
#60 0x000071eac7fa35ea in ??? () at /usr/lib/libQt6Core.so.6
#61 0x000071eacb0769ba in Plasma::Applet::appletDeleted (this=0x584093745b10, _t1=0x584093745b10) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_applet.cpp:927
#62 0x000071eacb071271 in Plasma::Applet::~Applet (this=0x584093745b10, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:72
#63 0x000071eacb071352 in Plasma::Applet::~Applet (this=0x584093745b10, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:85
#64 0x000071eac01c2c6a in SystemTray::onEnabledAppletsChanged (this=0x584084047740) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:366
#65 0x000071eac01cdb90 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SystemTray::*)()>::call(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd904e0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:145
#66 0x000071eac01cc2b8 in QtPrivate::FunctionPointer<void (SystemTray::*)()>::call<QtPrivate::List<>, void>(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd904e0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:182
#67 0x000071eac01ca9c7 in QtPrivate::QCallableObject<void (SystemTray::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x584083ddb950, r=0x584084047740, a=0x7ffeabd904e0, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:553
#68 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#69 0x000071eac01e2649 in SystemTraySettings::enabledPluginsChanged (this=0x584084052550, _t1=..., _t2=...) at /home/natalie/kde/build/plasma-workspace/applets/systemtray/systemtray_static_autogen/EWIEGA46WW/moc_systemtraysettings.cpp:162
#70 0x000071eac020501d in SystemTraySettings::removeEnabledPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:75
#71 0x000071eac020523f in SystemTraySettings::cleanupPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:96
#72 0x000071eac01c36f8 in operator()<Plasma::Applet*> (__closure=0x584083ca0300, applet=0x5840937badc0) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:70
#73 0x000071eac01c41ab in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Plasma::Applet*>, void, SystemTray::init()::<lambda(auto:52)> >::call(struct {...} &, void **) (f=..., arg=0x7ffeabd90840) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#74 0x000071eac01c405f in QtPrivate::FunctorCallable<SystemTray::init()::<lambda(auto:52)>, Plasma::Applet*>::call<QtPrivate::List<Plasma::Applet*>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffeabd90840) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#75 0x000071eac01c3eab in QtPrivate::QCallableObject<SystemTray::init()::<lambda(auto:52)>, QtPrivate::List<Plasma::Applet*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x584083ca02f0, r=0x584084047740, a=0x7ffeabd90840, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555
#76 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#77 0x000071eacb08c2c2 in Plasma::Containment::appletRemoved (this=0x584084047740, _t1=0x5840937badc0) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:743
#78 0x000071eacb0bff43 in Plasma::ContainmentPrivate::appletDeleted (this=0x58408404a420, applet=0x5840937badc0) at /home/natalie/kde/src/libplasma/src/plasma/private/containment_p.cpp:213
#79 0x000071eacb08ae73 in Plasma::Containment::qt_static_metacall (_o=0x584084047740, _c=QMetaObject::InvokeMetaMethod, _id=26, _a=0x7ffeabd90a30) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:403
#80 0x000071eac7fa35ea in ??? () at /usr/lib/libQt6Core.so.6
#81 0x000071eacb0769ba in Plasma::Applet::appletDeleted (this=0x5840937badc0, _t1=0x5840937badc0) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_applet.cpp:927
#82 0x000071eacb071271 in Plasma::Applet::~Applet (this=0x5840937badc0, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:72
#83 0x000071eacb071352 in Plasma::Applet::~Applet (this=0x5840937badc0, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:85
#84 0x000071eac01c2c6a in SystemTray::onEnabledAppletsChanged (this=0x584084047740) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:366
#85 0x000071eac01cdb90 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SystemTray::*)()>::call(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd90d80) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:145
#86 0x000071eac01cc2b8 in QtPrivate::FunctionPointer<void (SystemTray::*)()>::call<QtPrivate::List<>, void>(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd90d80) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:182
#87 0x000071eac01ca9c7 in QtPrivate::QCallableObject<void (SystemTray::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x584083ddb950, r=0x584084047740, a=0x7ffeabd90d80, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:553
#88 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#89 0x000071eac01e2649 in SystemTraySettings::enabledPluginsChanged (this=0x584084052550, _t1=..., _t2=...) at /home/natalie/kde/build/plasma-workspace/applets/systemtray/systemtray_static_autogen/EWIEGA46WW/moc_systemtraysettings.cpp:162
#90 0x000071eac020501d in SystemTraySettings::removeEnabledPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:75
#91 0x000071eac020523f in SystemTraySettings::cleanupPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:96
#92 0x000071eac01c36f8 in operator()<Plasma::Applet*> (__closure=0x584083ca0300, applet=0x584093cd1d90) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:70
#93 0x000071eac01c41ab in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Plasma::Applet*>, void, SystemTray::init()::<lambda(auto:52)> >::call(struct {...} &, void **) (f=..., arg=0x7ffeabd910e0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#94 0x000071eac01c405f in QtPrivate::FunctorCallable<SystemTray::init()::<lambda(auto:52)>, Plasma::Applet*>::call<QtPrivate::List<Plasma::Applet*>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffeabd910e0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#95 0x000071eac01c3eab in QtPrivate::QCallableObject<SystemTray::init()::<lambda(auto:52)>, QtPrivate::List<Plasma::Applet*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x584083ca02f0, r=0x584084047740, a=0x7ffeabd910e0, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555
#96 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#97 0x000071eacb08c2c2 in Plasma::Containment::appletRemoved (this=0x584084047740, _t1=0x584093cd1d90) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:743
#98 0x000071eacb0bff43 in Plasma::ContainmentPrivate::appletDeleted (this=0x58408404a420, applet=0x584093cd1d90) at /home/natalie/kde/src/libplasma/src/plasma/private/containment_p.cpp:213
#99 0x000071eacb08ae73 in Plasma::Containment::qt_static_metacall (_o=0x584084047740, _c=QMetaObject::InvokeMetaMethod, _id=26, _a=0x7ffeabd912d0) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:403
#100 0x000071eac7fa35ea in ??? () at /usr/lib/libQt6Core.so.6
#101 0x000071eacb0769ba in Plasma::Applet::appletDeleted (this=0x584093cd1d90, _t1=0x584093cd1d90) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_applet.cpp:927
#102 0x000071eacb071271 in Plasma::Applet::~Applet (this=0x584093cd1d90, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:72
#103 0x000071eacb071352 in Plasma::Applet::~Applet (this=0x584093cd1d90, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:85
#104 0x000071eac01c2c6a in SystemTray::onEnabledAppletsChanged (this=0x584084047740) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:366
#105 0x000071eac01cdb90 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SystemTray::*)()>::call(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd91620) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:145
#106 0x000071eac01cc2b8 in QtPrivate::FunctionPointer<void (SystemTray::*)()>::call<QtPrivate::List<>, void>(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd91620) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:182
#107 0x000071eac01ca9c7 in QtPrivate::QCallableObject<void (SystemTray::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x584083ddb950, r=0x584084047740, a=0x7ffeabd91620, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:553
#108 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#109 0x000071eac01e2649 in SystemTraySettings::enabledPluginsChanged (this=0x584084052550, _t1=..., _t2=...) at /home/natalie/kde/build/plasma-workspace/applets/systemtray/systemtray_static_autogen/EWIEGA46WW/moc_systemtraysettings.cpp:162
#110 0x000071eac020501d in SystemTraySettings::removeEnabledPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:75
#111 0x000071eac020523f in SystemTraySettings::cleanupPlugin (this=0x584084052550, pluginId=...) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtraysettings.cpp:96
#112 0x000071eac01c36f8 in operator()<Plasma::Applet*> (__closure=0x584083ca0300, applet=0x584093611b60) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:70
#113 0x000071eac01c41ab in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<Plasma::Applet*>, void, SystemTray::init()::<lambda(auto:52)> >::call(struct {...} &, void **) (f=..., arg=0x7ffeabd91980) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#114 0x000071eac01c405f in QtPrivate::FunctorCallable<SystemTray::init()::<lambda(auto:52)>, Plasma::Applet*>::call<QtPrivate::List<Plasma::Applet*>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffeabd91980) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#115 0x000071eac01c3eab in QtPrivate::QCallableObject<SystemTray::init()::<lambda(auto:52)>, QtPrivate::List<Plasma::Applet*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x584083ca02f0, r=0x584084047740, a=0x7ffeabd91980, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555
#116 0x000071eac7fa3397 in ??? () at /usr/lib/libQt6Core.so.6
#117 0x000071eacb08c2c2 in Plasma::Containment::appletRemoved (this=0x584084047740, _t1=0x584093611b60) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:743
#118 0x000071eacb0bff43 in Plasma::ContainmentPrivate::appletDeleted (this=0x58408404a420, applet=0x584093611b60) at /home/natalie/kde/src/libplasma/src/plasma/private/containment_p.cpp:213
#119 0x000071eacb08ae73 in Plasma::Containment::qt_static_metacall (_o=0x584084047740, _c=QMetaObject::InvokeMetaMethod, _id=26, _a=0x7ffeabd91b70) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_containment.cpp:403
#120 0x000071eac7fa35ea in ??? () at /usr/lib/libQt6Core.so.6
#121 0x000071eacb0769ba in Plasma::Applet::appletDeleted (this=0x584093611b60, _t1=0x584093611b60) at /home/natalie/kde/build/libplasma/src/plasma/Plasma_autogen/include/moc_applet.cpp:927
#122 0x000071eacb071271 in Plasma::Applet::~Applet (this=0x584093611b60, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:72
#123 0x000071eacb071352 in Plasma::Applet::~Applet (this=0x584093611b60, __in_chrg=<optimized out>) at /home/natalie/kde/src/libplasma/src/plasma/applet.cpp:85
#124 0x000071eac01c2c6a in SystemTray::onEnabledAppletsChanged (this=0x584084047740) at /home/natalie/kde/src/plasma-workspace/applets/systemtray/systemtray.cpp:366
#125 0x000071eac01cdb90 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SystemTray::*)()>::call(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd91ec0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:145
#126 0x000071eac01cc2b8 in QtPrivate::FunctionPointer<void (SystemTray::*)()>::call<QtPrivate::List<>, void>(void (SystemTray::*)(), SystemTray*, void**) (f=(void (SystemTray::*)(class SystemTray * const)) 0x71eac01c2a50 <SystemTray::onEnabledAppletsChanged()>, o=0x584084047740, arg=0x7ffeabd91ec0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:182
#127 0x000071eac01ca9c7 in QtPrivate::QCallableObject<void (SystemTray::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x584083ddb950, r=0x584084047740, a=0x7ffeabd91ec0, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:553
Comment 2 Mike 2024-10-03 11:18:27 UTC
Reverting https://invent.kde.org/plasma/plasma-workspace/-/commit/6c08876d8be5d3dd3d083a4b10988bd1f2512194 eliminates the crash, specifically the changes to systemtray.cpp
Comment 3 Nate Graham 2024-10-03 18:08:39 UTC
Can reproduce.
Comment 4 Bug Janitor Service 2024-10-04 10:32:44 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/4789
Comment 5 Mike 2024-10-04 11:05:22 UTC
Looks good, no crash with 4789 applied
Comment 6 Akseli Lahtinen 2024-10-04 11:17:29 UTC
Git commit 20255a4c54891c349d322a2e992c136e041b9c22 by Akseli Lahtinen.
Committed on 04/10/2024 at 11:17.
Pushed by akselmo into branch 'master'.

systemtray.cpp: Make AppletRemoved signal a singleshot connection

If user disables an entry in system settings, this connection
will end up in an endless loop:

When the `cleanupPlugin` is called, 
we eventually end up calling 
`SystemTray::onEnabledAppletsChanged` 
through `SystemTraySettings::enabledPluginsChanged` signal.

There we delete applet and applets deconstructor calls 
`appletDeleted`.

This then ends up in `ContainmentPrivate::appletDeleted` where 
the signal `appletRemoved` is emitted.

This then makes the signal run over this same connection, then 
`cleanupPlugin`.. And it loops.

Adding `Qt::SingleShotConnection` disconnects the connection 
after it's called, so it won't get stuck in a loop.

M  +15   -10   applets/systemtray/systemtray.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/20255a4c54891c349d322a2e992c136e041b9c22