Bug 505759

Summary: KWin crashed in QRect::bottom() after KWin::OutputLayer::addRepaint() when waking displays
Product: [Plasma] kwin Reporter: TraceyC <kdedev>
Component: generic-crashAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: nate, xaver.hugl
Priority: NOR Keywords: multiscreen
Version First Reported In: 6.4.80   
Target Milestone: ---   
Platform: Other   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=508620
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description TraceyC 2025-06-19 00:49:46 UTC
SUMMARY
I had locked my session while the laptop was plugged into a dock connected to 2 external monitors. After an hour or so, I tried to log into the system. Only the laptop display was active, not the monitors. I unplugged and replugged the docking cable, I think that's when the crash happened.

STEPS TO REPRODUCE
1. Lock session
2. After all displays have gone to sleep, unlock the session.
3. Reseat docking cable / reconnect a display

OBSERVED RESULT
kwin crashed

EXPECTED RESULT
Displays are all 

SOFTWARE/OS VERSIONS
Operating System: Solus 4.7
KDE Plasma Version: 6.4.80
KDE Frameworks Version: 6.16.0
Qt Version: 6.9.1
Kernel Version: 6.14.6-319.current (64-bit)
Graphics Platform: Wayland
Processors: 16 × 11th Gen Intel® Core™ i7-11800H @ 2.30GHz
Memory: 64 GiB of RAM (62.5 GiB usable)
Graphics Processor 1: Intel® UHD Graphics
Graphics Processor 2: NVIDIA GeForce RTX 3060 Laptop GPU


ADDITIONAL INFORMATION
]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib64/libthread_db.so.1".
Core was generated by `/home/tracey/kde/usr/bin/kwin_wayland --wayland-fd 7 --socket wayland-0 --xwayland-fd 8 --xwayland-fd 9 --xwayland-display :1 --xwayland-xauthority /run/user/1000/xauth_QscvKX --xwayland'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  QRect::bottom (this=0x55f71a6708c0) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/tools/qrect.h:183

warning: 183    /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/tools/qrect.h: No such file or directory
[Current thread is 1 (Thread 0x7f3ec32c7a40 (LWP 643778))]
Function(s) ^std::(move|forward|as_const|(__)?addressof) will be skipped when stepping.
Function(s) ^std::(shared|unique)_ptr<.*>::(get|operator) will be skipped when stepping.
Function(s) ^std::(basic_string|vector|array|deque|(forward_)?list|(unordered_|flat_)?(multi)?(map|set)|span)<.*>::(c?r?(begin|end)|front|back|data|size|empty) will be skipped when stepping.
Function(s) ^std::(basic_string|vector|array|deque|span)<.*>::operator.] will be skipped when stepping.
(gdb) bt
#0  QRect::bottom (this=0x55f71a6708c0) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/tools/qrect.h:183
#1  QRegionPrivate::canAppend (this=0x55f9d91306a0, r=0x55f9d5ef8e30) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/gui/painting/qregion.cpp:1518
#2  QRegionPrivate::canAppend (this=0x55f9d91306a0, r=0x55f9d5ef8e10) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/gui/painting/qregion.cpp:1532
#3  QRegion::operator+= (this=0x55f9d6109d70, r=...) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/gui/painting/qregion.cpp:3980
#4  0x00007f3ecb70850c in KWin::OutputLayer::addRepaint (this=0x55f9d6109d60, region=...) at /home/tracey/kde/src/kwin/src/core/outputlayer.cpp:51
#5  0x00007f3ecb89947e in KWin::SceneView::addRepaint (this=<optimized out>, region=<optimized out>) at /home/tracey/kde/src/kwin/src/scene/scene.cpp:99
#6  0x00007f3ecb899737 in KWin::Scene::addRepaint (this=<optimized out>, delegate=delegate@entry=0x55f9d4b61c00, region=...) at /home/tracey/kde/src/kwin/src/scene/scene.cpp:153
#7  0x00007f3ecb889755 in KWin::Item::scheduleSceneRepaintInternal (this=this@entry=0x55f9d4914080, region=...) at /home/tracey/kde/src/kwin/src/scene/item.cpp:479
#8  0x00007f3ecb8897f2 in KWin::Item::scheduleSceneRepaint (this=this@entry=0x55f9d4914080, region=...) at /home/tracey/kde/src/kwin/src/scene/item.cpp:555
#9  0x00007f3ecb889847 in KWin::Item::scheduleSceneRepaint (this=this@entry=0x55f9d4914080, region=...) at /home/tracey/kde/src/kwin/src/scene/item.cpp:549
#10 0x00007f3ecb8898d6 in KWin::Item::setZ (this=0x55f9d4914080, z=<optimized out>) at /home/tracey/kde/src/kwin/src/scene/item.cpp:87
#11 0x00007f3ec8547cb4 in QtPrivate::QSlotObjectBase::call (this=0x55f9d9404b70, r=0x55f9d4914080, a=0x7ffd622fce38)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobjectdefs_impl.h:461
#12 doActivate<false> (sender=0x55f9d4338b50, signal_index=3, argv=0x7ffd622fce38)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobject.cpp:4146
#13 0x00007f3ecb7f153f in KWin::Workspace::updateStackingOrder (this=0x55f9d19a3860, propagate_new_windows=<optimized out>) at /home/tracey/kde/src/kwin/src/layers.cpp:111
#14 KWin::Workspace::updateStackingOrder (this=0x55f9d19a3860, propagate_new_windows=<optimized out>) at /home/tracey/kde/src/kwin/src/layers.cpp:94
#15 0x00007f3ec8547cb4 in QtPrivate::QSlotObjectBase::call (this=0x55f9d6f35540, r=0x55f9d6ea23e0, a=0x7ffd622fcfa0)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobjectdefs_impl.h:461
#16 doActivate<false> (sender=0x55f9d19a3860, signal_index=19, argv=0x7ffd622fcfa0)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobject.cpp:4146
#17 0x00007f3ecb96e4e7 in QMetaObject::activate<void, KWin::Output*> (sender=0x55f9d19a3860, mo=0x7f3ecbd399a0 <KWin::Workspace::staticMetaObject>, local_signal_index=16, ret=0x0)
    at /usr/include/qt6/QtCore/qobjectdefs.h:306
#18 KWin::Workspace::outputRemoved (this=this@entry=0x55f9d19a3860, _t1=<optimized out>) at /home/tracey/kde/build/kwin/src/kwin_autogen/include/moc_workspace.cpp:662
#19 0x00007f3ecb98577c in KWin::Workspace::updateOutputs (this=this@entry=0x55f9d19a3860, outputOrder=std::optional = {...}) at /home/tracey/kde/src/kwin/src/workspace.cpp:1274
#20 0x00007f3ecb9878bb in KWin::Workspace::applyOutputConfiguration (this=this@entry=0x55f9d19a3860, config=..., outputOrder=std::optional = {...})
    at /home/tracey/kde/src/kwin/src/workspace.cpp:431
#21 0x00007f3ecb987f12 in KWin::Workspace::updateOutputConfiguration (this=this@entry=0x55f9d19a3860) at /home/tracey/kde/src/kwin/src/workspace.cpp:500
#22 0x00007f3ecb988a29 in KWin::Workspace::slotOutputBackendOutputsQueried (this=0x55f9d19a3860) at /home/tracey/kde/src/kwin/src/workspace.cpp:1194
#23 0x00007f3ec8547cb4 in QtPrivate::QSlotObjectBase::call (this=0x55f9d2c63330, r=0x55f9d19a3860, a=0x7ffd622fd478)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobjectdefs_impl.h:461
#24 doActivate<false> (sender=0x7f3eb400fc90, signal_index=3, argv=0x7ffd622fd478)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobject.cpp:4146
#25 0x00007f3ecb9e1d25 in KWin::DrmBackend::updateOutputs (this=this@entry=0x7f3eb400fc90) at /home/tracey/kde/src/kwin/src/backends/drm/drm_backend.cpp:284
#26 0x00007f3ecb9e257f in KWin::DrmBackend::handleUdevEvent (this=<optimized out>) at /home/tracey/kde/src/kwin/src/backends/drm/drm_backend.cpp:203
#27 0x00007f3ec8547cb4 in QtPrivate::QSlotObjectBase::call (this=0x55f9d103c490, r=0x7f3eb400fc90, a=0x7ffd622fd740)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobjectdefs_impl.h:461
#28 doActivate<false> (sender=0x55f9d1976b90, signal_index=3, argv=0x7ffd622fd740)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobject.cpp:4146
#29 0x00007f3ec855d3c2 in QMetaObject::activate (sender=0x55f9d1976b90, local_signal_index=0, argv=0x7ffd622fd740, m=<optimized out>)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobject.cpp:4206
#30 QMetaObject::activate<void, QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal>
    (sender=0x55f9d1976b90, local_signal_index=0, ret=0x0, args=..., args=@0x7ffd622fd734: QSocketNotifier::Read, args=..., mo=<optimized out>)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qobjectdefs.h:306
#31 QSocketNotifier::activated (this=0x55f9d1976b90, _t1=..., _t2=QSocketNotifier::Read, _t3=...) at src/corelib/Core_autogen/include/moc_qsocketnotifier.cpp:161
#32 QSocketNotifier::event (this=0x55f9d1976b90, e=<optimized out>) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qsocketnotifier.cpp:327
#33 0x00007f3ec984e2f0 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55f9d1976b90, e=0x7ffd622fd968)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/widgets/kernel/qapplication.cpp:3303
#34 0x00007f3ec984f57d in QApplication::notify (this=<optimized out>, receiver=0x55f9d1976b90, e=0x7ffd622fd968)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/widgets/kernel/qapplication.cpp:2695
#35 0x00007f3ec86c6934 in QCoreApplication::notifyInternal2 (receiver=0x55f9d1976b90, event=0x7ffd622fd968)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qcoreapplication.cpp:1106
#36 QCoreApplication::sendEvent (receiver=0x55f9d1976b90, event=0x7ffd622fd968)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qcoreapplication.cpp:1546
#37 QEventDispatcherUNIXPrivate::activateSocketNotifiers (this=0x55f9d1015990)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qeventdispatcher_unix.cpp:254
#38 0x00007f3ec86c83fe in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qeventdispatcher_unix.cpp:470
#39 0x00007f3ec92289d3 in QUnixEventDispatcherQPA::processEvents (this=0x55f9d6109d70, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/gui/platform/unix/qunixeventdispatcher.cpp:27
#40 0x00007f3ec84ee396 in QEventLoop::processEvents (this=0x7ffd622fdb00, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qeventloop.cpp:104
#41 QEventLoop::exec (this=0x7ffd622fdb00, flags=...) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qeventloop.cpp:186
#42 0x00007f3ec84e2d39 in QCoreApplication::exec () at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.9.1/src/corelib/kernel/qcoreapplication.cpp:1449
#43 0x000055f9b178b357 in main (argc=<optimized out>, argv=<optimized out>) at /home/tracey/kde/src/kwin/src/main_wayland.cpp:635
Comment 1 Zamundaaa 2025-08-29 15:42:11 UTC
I think this might be fixed with https://invent.kde.org/plasma/kwin/-/merge_requests/8053
Comment 2 TraceyC 2025-09-17 19:56:44 UTC
I re-tested this on today's git-master. I'm no longer seeing the crash.
Comment 3 David Edmundson 2025-10-08 12:25:29 UTC
*** Bug 508620 has been marked as a duplicate of this bug. ***