#0 0x00007f0b5c556fb4 in KWaylandServer::LayerSurfaceV1Interface::layer() const (this=0x2e9cd20) at /usr/include/c++/13/bits/unique_ptr.h:199 #1 0x00007f0b5c356990 in KWin::LayerShellV1Window::belongsToLayer() const (this=<optimized out>) at /home/nico/kde6/src/kwin/src/layershellv1window.cpp:201 #2 0x00007f0b5c42adcb in KWin::Window::updateLayer() (this=this@entry=0x2e966f0) at /home/nico/kde6/src/kwin/src/window.cpp:560 #3 0x00007f0b5c448178 in KWin::Workspace::setShowingDesktop(bool, bool) (this=0x28f57b0, showing=showing@entry=false, animated=animated@entry=true) at /home/nico/kde6/src/kwin/src/workspace.cpp:1542 #4 0x00007f0b5c2c42e3 in operator() (__closure=<optimized out>) at /home/nico/kde6/src/kwin/src/dbusinterface.cpp:244 #5 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::DBusInterface::showDesktop(bool)::<lambda()> >::call (arg=<optimized out>, f=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:127 #6 QtPrivate::Functor<KWin::DBusInterface::showDesktop(bool)::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:241 #7 QtPrivate::QFunctorSlotObject<KWin::DBusInterface::showDesktop(bool)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:409 #8 0x00007f0b589dd894 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffc0a776410, r=0x57fee10, this=0x57a4c90) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363 #9 doActivate<false>(QObject*, int, void**) (sender=0x57fee10, signal_index=4, argv=0x7ffc0a776410) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992 #10 0x00007f0b589d4317 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=m@entry=0x7f0b59a30100 <QDBusServiceWatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7ffc0a776410) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052 #11 0x00007f0b59a02e5c in QDBusServiceWatcher::serviceUnregistered(QString const&) (this=<optimized out>, _t1=<optimized out>) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/redhat-linux-build/src/dbus/DBus_autogen/include/moc_qdbusservicewatcher.cpp:309 #12 0x00007f0b59a043c4 in QDBusServiceWatcherPrivate::_q_serviceOwnerChanged(QString const&, QString const&, QString const&) (newOwner=<optimized out>, oldOwner=<optimized out>, service=<optimized out>, this=<optimized out>) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/dbus/qdbusservicewatcher.cpp:56 #13 0x00007f0b59a0515f in QDBusServiceWatcher::qt_metacall(QMetaObject::Call, int, void**) (this=0x57fee10, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7ffc0a7765b8) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/redhat-linux-build/src/dbus/DBus_autogen/include/moc_qdbusservicewatcher.cpp:283 #14 0x00007f0b599b6ed9 in QDBusConnectionPrivate::deliverCall(QObject*, int, QDBusMessage const&, QList<QMetaType> const&, int) (this=0x7f0b40001720, object=0x57fee10, msg=..., metaTypes=<optimized out>, slotIdx=8) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/dbus/qdbusintegrator.cpp:975 #15 0x00007f0b589cf357 in QObject::event(QEvent*) (this=0x57fee10, e=0x7f0b400236e0) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/kernel/qobject.cpp:1391 #16 0x00007f0b59dc09c8 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x57fee10, e=0x7f0b400236e0) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/widgets/kernel/qapplication.cpp:3284 #17 0x00007f0b5897bfc8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x57fee10, event=0x7f0b400236e0) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1115 #18 0x00007f0b5897c1cd in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1533 #19 0x00007f0b5897f9a5 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=data@entry=0x2585b50) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1895 #20 0x00007f0b58afbf56 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x2588660, flags=...) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/kernel/qeventdispatcher_unix.cpp:432 #21 0x00007f0b59743232 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/gui/platform/unix/qunixeventdispatcher.cpp:27 #22 0x00007f0b58988ac3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffc0a776b10, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/global/qflags.h:34 #23 0x00007f0b5898476d in QCoreApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/corelib/global/qflags.h:74 #24 0x00007f0b591f888d in QGuiApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/gui/kernel/qguiapplication.cpp:1886 #25 0x00007f0b59dc0939 in QApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.0-2.fc38.x86_64/src/widgets/kernel/qapplication.cpp:2564 #26 0x00000000004362d8 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/nico/kde6/src/kwin/src/main_wayland.cpp:613
Specifically it crashes after clicking "Show Desktop" in the panel (which actually doesn't show the desktop?) and then running "plasmashell --replace"
I could reproduce with those steps. Should only affect Plasma 6.
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/4138
Git commit cf2410f6312697ef86312a391c12ebe329a2e6d1 by Vlad Zahorodnii, on behalf of David Edmundson. Committed on 26/05/2023 at 08:30. Pushed by vladz into branch 'master'. Guard updateLayer for deleted windows When a window is deleted it all "set" operations should no-op. As for the bug specifically, we have an effect that keeps the desktop alive. If a user calls showDesktop not only do we not update the stacking order, we also call updateLayer when the client closes this is after the window is in the deleted state. M +4 -6 src/window.cpp M +0 -1 src/window.h https://invent.kde.org/plasma/kwin/-/commit/cf2410f6312697ef86312a391c12ebe329a2e6d1