SUMMARY KWin for Plasma 6 often crashes, was fine with Plasma 5. I never pay enough attention to figure out how exactly it happens, but I think it's related to the top-left hot corner trigger action and when hitting it, and it's showing one of the possible window overview layouts. I captured a backtrace for plasma 6.0.5/kwin_wayland 6.0.5 on openSUSE Slowroll: #0 0x00007ff832a125bc in ExpoLayout::calculateWindowTransformationsNatural() (this=this@entry=0x55c131b67af0) at /usr/src/debug/kwin-6.0.5/src/plugins/private/expolayout.cpp:539 #1 0x00007ff832a144b9 in ExpoLayout::updatePolish() (this=0x55c131b67af0) at /usr/src/debug/kwin-6.0.5/src/plugins/private/expolayout.cpp:293 #2 0x00007ff84f2be933 in QQuickWindowPrivate::polishItems() (this=0x55c1309474c0) at /usr/src/debug/qtdeclarative-everywhere-src-6.7.1/src/quick/items/qquickwindow.cpp:369 #3 0x00007ff84f25f9b1 in QQuickRenderControl::polishItems() (this=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-6.7.1/src/quick/items/qquickrendercontrol.cpp:344 #4 0x00007ff84fac1bd6 in KWin::OffscreenQuickView::update() (this=0x55c130bf9a00) at /usr/src/debug/kwin-6.0.5/src/effect/offscreenquickview.cpp:238 #5 KWin::OffscreenQuickView::update() (this=0x55c130bf9a00) at /usr/src/debug/kwin-6.0.5/src/effect/offscreenquickview.cpp:199 #6 0x00007ff84faa1cea in KWin::EffectsHandler::prePaintScreen(KWin::ScreenPrePaintData&, std::chrono::duration<long, std::ratio<1l, 1000l> >) (this=0x55c12c39fc30, data=..., presentTime=std::chrono::duration = { <optimized out>ms }) at /usr/src/debug/kwin-6.0.5/src/effect/effecthandler.cpp:297 #7 0x000055c11225383a in KWin::ScreenEdgeEffect::prePaintScreen(KWin::ScreenPrePaintData&, std::chrono::duration<long, std::ratio<1l, 1000l> >) (this=0x55c12c3b2be0, data=..., presentTime=std::chrono::duration = { <optimized out>ms }) at /usr/src/debug/kwin-6.0.5/src/plugins/screenedge/screenedgeeffect.cpp:83 #8 0x00007ff84faa1cea in KWin::EffectsHandler::prePaintScreen(KWin::ScreenPrePaintData&, std::chrono::duration<long, std::ratio<1l, 1000l> >) (this=0x55c12c39fc30, data=<optimized out>, presentTime=std::chrono::duration = { <optimized out>ms }) at /usr/src/debug/kwin-6.0.5/src/effect/effecthandler.cpp:297 #9 0x00007ff84fb99487 in KWin::WorkspaceScene::prePaint(KWin::SceneDelegate*) (this=0x55c12b843540, delegate=0x55c12b8b6080) at /usr/src/debug/kwin-6.0.5/src/scene/workspacescene.cpp:264 #10 0x00007ff84fb89f95 in KWin::SceneDelegate::prePaint() (this=<optimized out>) --Type <RET> for more, q to quit, c to continue without paging-- at /usr/src/debug/kwin-6.0.5/src/scene/scene.cpp:34 #11 0x00007ff84fa41045 in KWin::Compositor::prePaintPass(KWin::RenderLayer*, QRegion*) (this=this@entry=0x55c12b66a940, layer=layer@entry=0x55c12b8be820, damage=damage@entry=0x7ffc6b23d7a0) at /usr/src/debug/kwin-6.0.5/src/compositor.cpp:235 #12 0x00007ff84fa41936 in KWin::Compositor::composite(KWin::RenderLoop*) (this=0x55c12b66a940, renderLoop=<optimized out>) at /usr/src/debug/kwin-6.0.5/src/compositor.cpp:162 #13 0x00007ff84cfe8130 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffc6b23db10, r=0x55c12b66a940, this=0x55c12b9e1c80) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/kernel/qobjectdefs_impl.h:469 #14 doActivate<false>(QObject*, int, void**) (sender=0x55c12b6c2830, signal_index=5, argv=0x7ffc6b23db10) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/kernel/qobject.cpp:4086 #15 0x00007ff84fa5a1e2 in KWin::RenderLoop::frameRequested(KWin::RenderLoop*) (this=<optimized out>, _t1=<optimized out>) at /usr/src/debug/kwin-6.0.5/build/src/kwin_autogen/include/moc_renderloop.cpp:208 #16 0x00007ff84fa5e933 in KWin::RenderLoopPrivate::dispatch() (this=0x55c12b971480) at /usr/src/debug/kwin-6.0.5/src/core/renderloop.cpp:128 #17 0x00007ff84cfe8130 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffc6b23dc40, r=0x55c12b6c2830, this=0x55c12b973b00) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/kernel/qobjectdefs_impl.h:469 #18 doActivate<false>(QObject*, int, void**) (sender=0x55c12b9714a0, signal_index=3, argv=0x7ffc6b23dc40) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/kernel/qobject.cpp:4086 #19 0x00007ff84cfec7fa in QTimer::timeout(QTimer::QPrivateSignal) (this=<optimized out>, _t1=...) at /usr/src/debug/qtbase-everywhere-src-6.7.1/build/src/corelib/Core_autogen/include/moc_qtimer.cpp:224 #20 0x00007ff84cfd1f76 in QObject::event(QEvent*) (this=0x55c12b9714a0, e=0x7ffc6b23ddc0) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/kernel/qobject.cpp:1427 #21 0x00007ff84e1c2f7e in QApplicationPrivate::notify_helper(QObject*, QEvent*) --Type <RET> for more, q to quit, c to continue without paging-- (this=<optimized out>, receiver=0x55c12b9714a0, e=0x7ffc6b23ddc0) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/widgets/kernel/qapplication.cpp:3287 #22 0x00007ff84cf8ee20 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55c12b9714a0, event=0x7ffc6b23ddc0) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/kernel/qcoreapplication.cpp:1134 #23 0x00007ff84d0eca5a in QTimerInfoList::activateTimers() (this=0x55c12b343c58) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/kernel/qtimerinfo_unix.cpp:434 #24 0x00007ff84d0f35ec in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=..., flags@entry=...) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/kernel/qeventdispatcher_unix.cpp:472 #25 0x00007ff84dc0b47d in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/gui/platform/unix/qunixeventdispatcher.cpp:27 #26 0x00007ff84cf9959b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffc6b23dfa0, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/global/qflags.h:34 #27 0x00007ff84cf92da6 in QCoreApplication::exec() () at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/corelib/global/qflags.h:74 #28 0x00007ff84d7e7e8c in QGuiApplication::exec() () at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/gui/kernel/qguiapplication.cpp:1926 #29 0x00007ff84e1c0005 in QApplication::exec() () at /usr/src/debug/qtbase-everywhere-src-6.7.1/src/widgets/kernel/qapplication.cpp:2555 #30 0x000055c1121ee702 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kwin-6.0.5/src/main_wayland.cpp:609
It crashes with SIGFPE, so it seems to be some floating point or math error. This happens pretty often, usually about once a day.
Apparently fixed with: https://invent.kde.org/plasma/kwin/-/merge_requests/5776 in 6.0
`calculateWindowTransformationsNatural` has also been replaced in 6.1 with a new layout algorithm