Created attachment 163206 [details] backtrace Application: plasmashell (5.81.0) Qt Version: 6.6.0 Frameworks Version: 5.245.0 Operating System: Linux 6.2.0-36-generic x86_64 Windowing System: Wayland Distribution: KDE neon Unstable Edition DrKonqi: 5.81.0 [CoredumpBackend] -- Information about the crash: Steps to reproduce: 1. open settings, go to global theme 2. select any different theme, select both appearance settings and desktop and window layout 3. click apply Observed behavior: plasmashell crashes The crash can be reproduced every time. -- Backtrace: Application: plasmashell (plasmashell), signal: Segmentation fault
The backtrace doesn't have many symbols, but is definitely an assert, would be nice to see from terminal outpupt what the assert message is
reproduced. the assert is ASSERT: "corona()" in file /home/diau/kf6/src/plasma-framework/src/plasma/containment.cpp, line 481
complete bt: ASSERT: "corona()" in file /home/diau/kf6/src/plasma-framework/src/plasma/containment.cpp, line 481 Thread 1 "plasmashell" received signal SIGABRT, Aborted. __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737222777536) at ./nptl/pthread_kill.c:44 44 ./nptl/pthread_kill.c: No such file or directory. (gdb) bt #0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737222777536) at ./nptl/pthread_kill.c:44 #1 __pthread_kill_internal (signo=6, threadid=140737222777536) at ./nptl/pthread_kill.c:78 #2 __GI___pthread_kill (threadid=140737222777536, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #3 0x00007ffff4242476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #4 0x00007ffff42287f3 in __GI_abort () at ./stdlib/abort.c:79 #5 0x00007ffff4ab7c18 in qAbort() () at ./src/corelib/global/qglobal.cpp:161 #6 0x00007ffff4af4050 in qt_message_fatal<QString&> (message=..., context=<optimized out>) at ./src/corelib/global/qlogging.cpp:2003 #7 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=QtFatalMsg, context=..., msg=<optimized out>, ap=<optimized out>) at ./src/corelib/global/qlogging.cpp:378 #8 0x00007ffff4ab8601 in QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7fffffffcdb8, msg=msg@entry=0x7ffff4daf0a8 "ASSERT: \"%s\" in file %s, line %d") at ./src/corelib/global/qlogging.cpp:901 #9 0x00007ffff4ab8660 in qt_assert(char const*, char const*, int) (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at ./src/corelib/global/qassert.cpp:68 #10 0x00007ffff77d3581 in Plasma::Containment::screen() const (this=0x555555ea5f90) at /home/diau/kf6/src/plasma-framework/src/plasma/containment.cpp:481 #11 0x00007ffff77d04f0 in operator()(int) const (__closure=0x555555ebc520, screenId=-1) at /home/diau/kf6/src/plasma-framework/src/plasma/containment.cpp:78 #12 0x00007ffff77d72cd in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, Plasma::Containment::init()::<lambda(int)> >::call(struct {...} &, void **) (f=..., arg=0x7fffffffd000) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:137 #13 0x00007ffff77d7181 in QtPrivate::Functor<Plasma::Containment::init()::<lambda(int)>, 1>::call<QtPrivate::List<int>, void>(struct {...} &, void *, void **) (f=..., arg=0x7fffffffd000) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:339 #14 0x00007ffff77d6f28 in QtPrivate::QCallableObject<Plasma::Containment::init()::<lambda(int)>, QtPrivate::List<int>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) --Type <RET> for more, q to quit, c to continue without paging-- (which=1, this_=0x555555ebc510, r=0x555555ea5f90, a=0x7fffffffd000, ret=0x0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:522 #15 0x00007ffff4ba5912 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fffffffd000, r=0x555555ea5f90, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:433 #16 doActivate<false>(QObject*, int, void**) (sender=0x555555bc71f0, signal_index=7, argv=0x7fffffffd000) at ./src/corelib/kernel/qobject.cpp:4021 #17 0x00007ffff77f8fff in Plasma::Corona::availableScreenRegionChanged(int) (this=0x555555bc71f0, _t1=-1) at /home/diau/kf6/build/plasma-framework/src/plasma/KF6Plasma_autogen/include/moc_corona.cpp:627 #18 0x000055555563c14b in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, void (Plasma::Corona::*)(int)>::call(void (Plasma::Corona::*)(int), Plasma::Corona*, void**) (f=(void (Plasma::Corona::*)(class Plasma::Corona * const, int)) 0x7ffff77f8f9e <Plasma::Corona::availableScreenRegionChanged(int)>, o=0x555555bc71f0, arg=0x7fffffffd1e0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:145 #19 0x0000555555633e66 in QtPrivate::FunctionPointer<void (Plasma::Corona::*)(int)>::call<QtPrivate::List<int>, void>(void (Plasma::Corona::*)(int), Plasma::Corona*, void**) (f=(void (Plasma::Corona::*)(class Plasma::Corona * const, int)) 0x7ffff77f8f9e <Plasma::Corona::availableScreenRegionChanged(int)>, o=0x555555bc71f0, arg=0x7fffffffd1e0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:182 #20 0x000055555562bad9 in QtPrivate::QCallableObject<void (Plasma::Corona::*)(int), QtPrivate::List<int>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x555555b9f750, r=0x555555bc71f0, a=0x7fffffffd1e0, ret=0x0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:520 #21 0x00007ffff4ba5912 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fffffffd1e0, r=0x555555bc71f0, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:433 #22 doActivate<false>(QObject*, int, void**) (sender=0x555555bc71f0, signal_index=8, argv=0x7fffffffd1e0) at ./src/corelib/kernel/qobject.cpp:4021 #23 0x00007ffff77f9077 in Plasma::Corona::availableScreenRectChanged(int) (this=0x555555bc71f0, _t1=-1) --Type <RET> for more, q to quit, c to continue without paging-- at /home/diau/kf6/build/plasma-framework/src/plasma/KF6Plasma_autogen/include/moc_corona.cpp:634 #24 0x0000555555601c5c in ShellCorona::panelContainmentDestroyed(QObject*) (this=0x555555bc71f0, obj=0x555555e610b0) at /home/diau/kf6/src/plasma-workspace/shell/shellcorona.cpp:1505 #25 0x000055555563f92e in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<QObject*>, void, void (ShellCorona::*)(QObject*)>::call(void (ShellCorona::*)(QObject*), ShellCorona*, void**) (f=(void (ShellCorona::*)(class ShellCorona * const, class QObject *)) 0x555555601bb4 <ShellCorona::panelContainmentDestroyed(QObject*)>, o=0x555555bc71f0, arg=0x7fffffffd400) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:145 #26 0x000055555563903e in QtPrivate::FunctionPointer<void (ShellCorona::*)(QObject*)>::call<QtPrivate::List<QObject*>, void>(void (ShellCorona::*)(QObject*), ShellCorona*, void**) (f=(void (ShellCorona::*)(class ShellCorona * const, class QObject *)) 0x555555601bb4 <ShellCorona::panelContainmentDestroyed(QObject*)>, o=0x555555bc71f0, arg=0x7fffffffd400) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:182 #27 0x00005555556312af in QtPrivate::QCallableObject<void (ShellCorona::*)(QObject*), QtPrivate::List<QObject*>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x555557634c40, r=0x555555bc71f0, a=0x7fffffffd400, ret=0x0) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:520 #28 0x00007ffff4ba5912 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fffffffd400, r=0x555555bc71f0, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:433 #29 doActivate<false>(QObject*, int, void**) (sender=0x555555e610b0, signal_index=0, argv=0x7fffffffd400) at ./src/corelib/kernel/qobject.cpp:4021 #30 0x00007ffff4ba01e3 in QObject::destroyed(QObject*) (this=<optimized out>, _t1=<optimized out>) at ./obj-x86_64-linux-gnu/src/corelib/kernel/moc_qobject.cpp:272 #31 0x00007ffff4b8ec54 in QObject::~QObject() (this=<optimized out>, this=<optimized out>) at ./src/corelib/kernel/qobject.cpp:1061 #32 0x00007ffff77bab83 in Plasma::Applet::~Applet() (this=0x555555e610b0, __in_chrg=<optimized out>) at /home/diau/kf6/src/plasma-framework/src/plasma/applet.cpp:90 #33 0x00007ffff77d03ec in Plasma::Containment::~Containment() (this=0x555555e610b0, __in_chrg=<optimized out>) --Type <RET> for more, q to quit, c to continue without paging-- at /home/diau/kf6/src/plasma-framework/src/plasma/containment.cpp:66 #34 0x00007ffff77d0410 in Plasma::Containment::~Containment() (this=0x555555e610b0, __in_chrg=<optimized out>) at /home/diau/kf6/src/plasma-framework/src/plasma/containment.cpp:66 #35 0x00007ffff4b8f5f1 in QObject::event(QEvent*) (this=0x555555e610b0, e=0x55555758fe70) at ./src/corelib/kernel/qobject.cpp:1424 #36 0x00007ffff5d90f58 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x555555e610b0, e=0x55555758fe70) at ./src/widgets/kernel/qapplication.cpp:3290 #37 0x00007ffff4b51e98 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x555555e610b0, event=0x55555758fe70) at ./src/corelib/kernel/qcoreapplication.cpp:1118 #38 0x00007ffff4b52085 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x555555750040) at ./src/corelib/kernel/qcoreapplication.cpp:1898 #39 0x00007ffff4d481f7 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55555575cbe0) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:243 #40 0x00007ffff329ed3b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #41 0x00007ffff32f4258 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #42 0x00007ffff329c3e3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #43 0x00007ffff4d4609e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x555555753fb0, flags=...) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:393 #44 0x00007ffff4b5cb5a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffffffd970, flags=...) at ./src/corelib/global/qflags.h:34 #45 0x00007ffff4b55c66 in QCoreApplication::exec() () at ./src/corelib/global/qflags.h:74 #46 0x00005555555a9c98 in main(int, char**) (argc=1, argv=0x7fffffffddb8) at /home/diau/kf6/src/plasma-workspace/shell/main.cpp:230
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-framework/-/merge_requests/967
Git commit faf8f617a661caabc6f276b108aceb3e0e64296c by Marco Martin. Committed on 17/11/2023 at 10:06. Pushed by mart into branch 'master'. Different way to deduce systray's corona when unloading the shell due to look and feel change, as object get deleted from the parent to the children, the panel gets deleted and during its dtor before the children (the systray container and then the systray) get actually deleted, corona emits an availableScreenRect/RegionChanged, the systray containment searches for its own screen, but it can't find its corona anymore because a containment in the hierarchy is not a containment anymore but just a QObject M +9 -7 src/plasma/containment.cpp https://invent.kde.org/plasma/plasma-framework/-/commit/faf8f617a661caabc6f276b108aceb3e0e64296c
Can confirm this is fixed on latest neon unstable, thanks!