https://bugs.kde.org/show_bug.cgi?id=473963
Bug ID: 473963 Summary: kwin_wayland crashes in KWin::DrmPipeline::updateCursor when disabling external screen Classification: Plasma Product: kwin Version: master Platform: Other OS: Linux Status: REPORTED Keywords: multiscreen, qt6 Severity: crash Priority: NOR Component: wayland-generic Assignee: kwin-bugs-n...@kde.org Reporter: n...@kde.org Target Milestone: --- SUMMARY Found while trying to reproduce Bug 468770 in Plasma 6. STEPS TO REPRODUCE 1. Be on Wayland 2. Start with the dual display setup pictured in the attachment. The right screen is primary at 200% scale, and the left is secondary at 100% scale (i.e. unscaled). My only panel is on the primary screen's left edge, essentially right in the middle of the whole arrangement. 3. Disable the secondary/left screen in the KScreen KCM OBSERVED RESULT kwin_wayland crashes 100% of the time. Backtrace: #0 KWin::DrmCrtc::cursorPlane() const (this=0x0) at /home/nate/kde/src/kwin/src/backends/drm/drm_crtc.cpp:96 #1 0x00007efe6b031492 in KWin::DrmPipeline::updateCursor() (this=0x1d22350) at /home/nate/kde/src/kwin/src/backends/drm/drm_pipeline.cpp:368 #2 0x00007efe6adcf567 in operator()() const (__closure=0xb19e620) at /home/nate/kde/src/kwin/src/composite.cpp:435 #3 0x00007efe679de394 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff29433ac8, r=0x69b1b40, this=0xb19e610) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363 #4 doActivate<false>(QObject*, int, void**) (sender=0x1801b430, signal_index=3, argv=0x7fff29433ac8) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992 #5 0x00007efe679d4e17 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x1801b430, m=m@entry=0x7efe6b34a9c0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052 #6 0x00007efe6add9d60 in KWin::Output::geometryChanged() (this=this@entry=0x1801b430) at /home/nate/kde/build6/kwin/src/kwin_autogen/include/moc_output.cpp:545 #7 0x00007efe6addc444 in KWin::Output::setState(KWin::Output::State const&) (this=<optimized out>, state=...) at /home/nate/kde/src/kwin/src/core/output.cpp:372 #8 0x00007efe6b0291e0 in KWin::DrmOutput::applyQueuedChanges(std::shared_ptr<KWin::OutputChangeSet> const&) (this=0x1801b430, props=std::shared_ptr<KWin::OutputChangeSet> (use count 2, weak count 0) = {...}) at /home/nate/kde/src/kwin/src/backends/drm/drm_output.cpp:351 #9 0x00007efe6afffd25 in KWin::DrmBackend::applyOutputChanges(KWin::OutputConfiguration const&) (this=0x1a54b90, config=...) at /home/nate/kde/src/kwin/src/backends/drm/drm_backend.cpp:402 #10 0x00007efe6aface34 in KWin::Workspace::applyOutputConfiguration(KWin::OutputConfiguration const&, QList<KWin::Output*> const&) (this=0x1acc8e0, config=..., outputOrder=...) at /home/nate/kde/src/kwin/src/workspace.cpp:507 #11 0x00007efe6b0beceb in KWaylandServer::OutputConfigurationV2Interface::kde_output_configuration_v2_apply(QtWaylandServer::kde_output_configuration_v2::Resource*) (this=<optimized out>, resource=<optimized out>) at /home/nate/kde/src/kwin/src/workspace.h:840 #12 0x00007efe66df6be6 in ffi_call_unix64 () at ../src/x86/unix64.S:104 #13 0x00007efe66df34bf in ffi_call_int (cif=cif@entry=0x7fff294340c0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673 #14 0x00007efe66df618e in ffi_call (cif=cif@entry=0x7fff294340c0, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7fff29434190) at ../src/x86/ffi64.c:710 #15 0x00007efe6b3a3521 in wl_closure_invoke (closure=0x5743110, flags=<optimized out>, target=<optimized out>, opcode=5, data=<optimized out>) at ../../src/wayland/src/connection.c:1025 #16 0x00007efe6b39ea92 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=0x43d88f0) at ../../src/wayland/src/wayland-server.c:438 #17 0x00007efe6b3a1652 in wl_event_loop_dispatch (loop=0x1a67db0, timeout=<optimized out>) at ../../src/wayland/src/event-loop.c:1104 #18 0x00007efe6b098b74 in KWaylandServer::Display::dispatchEvents() (this=<optimized out>) at /home/nate/kde/src/kwin/src/wayland/display.cpp:113 #19 0x00007efe679de394 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff29434640, r=0x1a97d60, this=0x1df9ec0) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363 #20 doActivate<false>(QObject*, int, void**) (sender=0x2152ca0, signal_index=3, argv=0x7fff29434640) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992 #21 0x00007efe679d4e17 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x2152ca0, m=m@entry=0x7efe67e0a0a0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff29434640) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052 #22 0x00007efe679eebfd in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x2152ca0, _t1=..., _t2=<optimized out>, _t3=...) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qsocketnotifier.cpp:231 #23 0x00007efe679ef3fb in QSocketNotifier::event(QEvent*) (this=0x2152ca0, e=<optimized out>) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qsocketnotifier.cpp:326 #24 0x00007efe68dc0af8 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x2152ca0, e=0x7fff29434790) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/widgets/kernel/qapplication.cpp:3287 #25 0x00007efe6797cdb8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x2152ca0, event=0x7fff29434790) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1118 #26 0x00007efe6797cfbd in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1536 #27 0x00007efe67afe10e in QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=this@entry=0x1ad97a0) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qeventdispatcher_unix.cpp:268 #28 0x00007efe67afea37 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/kernel/qeventdispatcher_unix.cpp:477 #29 0x00007efe68740092 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/gui/platform/unix/qunixeventdispatcher.cpp:27 #30 0x00007efe679899f3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff29434950, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/global/qflags.h:34 #31 0x00007efe6798569d in QCoreApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/corelib/global/qflags.h:74 #32 0x00007efe681f917d in QGuiApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/gui/kernel/qguiapplication.cpp:1908 #33 0x00007efe68dc0a69 in QApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.2-1.fc38.x86_64/src/widgets/kernel/qapplication.cpp:2566 #34 0x00000000004308e8 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/nate/kde/src/kwin/src/main_wayland.cpp:613 -- You are receiving this mail because: You are watching all bug changes.