| Summary: | kwin crashes in KWin::Workspace::outputRemoved() when switching from external monitor to internal monitor using a script that invokes kscreen-doctor a bunch | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | Xwang <xwaang1976> |
| Component: | multi-screen | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED DUPLICATE | ||
| Severity: | crash | CC: | kdb99, kde, kdedev, miren_radia, nate, xaver.hugl, xwaang1976 |
| Priority: | NOR | Keywords: | drkonqi, multiscreen |
| Version First Reported In: | 6.3.5 | ||
| Target Milestone: | --- | ||
| Platform: | Arch Linux | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | https://crash-reports.kde.org/organizations/kde/issues/178276/events/2b0be17e5e164f25a66afe11e5a9d655/ | ||
| Attachments: | Script used to switch monitors | ||
|
Description
Xwang
2025-05-11 10:42:21 UTC
Created attachment 181169 [details]
Script used to switch monitors
This is the script I use to switch monitor.
It is invoked when I press a specific button on the keyboard.
Moreover I'm pretty sure the bug is happening because when I never have both monitor enabled at the same time (internal monitor is disabled when I connect the external monitor and vice versa) Just to clarify, the crash happens both if I use the script or if I do not and just disconnect the hdmi cable I'm observing similar behaviour sometimes (but not always) when I do the following
1. Have laptop connected to a Thunderbolt dock with 2 screens connected to it and the internal screen disabled.
2. Disconnect from the dock (and therefore the 2 external screens) which should re-enable the internal screen.
My system is as follows:
Operating System: Fedora Linux 42
KDE Plasma Version: 6.3.5
KDE Frameworks Version: 6.13.0
Qt Version: 6.9.0
Kernel Version: 6.14.5-300.fc42.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × 12th Gen Intel® Core™ i7-1260P
Memory: 31.0 GiB of RAM
Graphics Processor: Intel® Iris® Xe Graphics
Manufacturer: Framework
Product Name: Laptop (12th Gen Intel Core)
System Version: A6
Here's a stack trace with debugging symbols:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0)
at pthread_kill.c:44
#1 0x00007f2a9c4811e3 in __pthread_kill_internal (threadid=<optimized out>, signo=11) at pthread_kill.c:89
#2 0x00007f2a9c427afe in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
#3 0x00007f2aa012eef1 in KCrash::defaultCrashHandler (sig=11)
at /usr/src/debug/kf6-kcrash-6.13.0-1.fc42.x86_64/src/kcrash.cpp:605
#4 0x00007f2a9c427c30 in <signal handler called> () at /lib64/libc.so.6
#5 0x00007f2a9fb57deb in KWin::DrmOutput::cursorLayer (this=0x55ed990e1880)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/backends/drm/drm_output.cpp:571
#6 0x00007f2a9f85eb8c in operator() (__closure=0x55ed99015b90)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/compositor_wayland.cpp:505
#7 0x00007f2a9cb6033a in QtPrivate::QSlotObjectBase::call
(this=0x55ed99015b80, r=0x55ed98845ba0, a=0x7fffd21d83b0)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:461
#8 doActivate<false> (sender=0x55ed9389a7f0, signal_index=3, argv=argv@entry=0x7fffd21d83b0)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4138
#9 0x00007f2a9cb56d09 in QMetaObject::activate
(sender=<optimized out>, m=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffd21d83b0) at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4198
#10 0x00007f2a9f88c727 in QMetaObject::activate<void, KWin::Cursor*>
(sender=<optimized out>, mo=<optimized out>, local_signal_index=0, ret=0x0)
at /usr/include/qt6/QtCore/qobjectdefs.h:306
#11 KWin::Cursors::currentCursorChanged (this=<optimized out>, _t1=<optimized out>)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/redhat-linux-build/src/kwin_autogen/include/moc_cursor.cpp:300
#12 0x00007f2a9cb6033a in QtPrivate::QSlotObjectBase::call
(this=0x55ed938ca200, r=0x55ed9389a7f0, a=0x7fffd21d8458)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:461
#13 doActivate<false> (sender=0x55ed938c0a70, signal_index=5, argv=0x7fffd21d8458)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4138
#14 0x00007f2a9f9c6fea in operator() (__closure=0x55ed948cd900)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/pointer_input.cpp:111
#15 operator() (__closure=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116
#16 QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, KWin::PointerInputRedirection::init()::<lambda()> >::call(KWin::PointerInputRedirection::init()::<lambda()>&, void**)::<lambda()> > (args=<optimized out>, fn=<optimized out>)
at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65
#17 QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, KWin::PointerInputRedirection::init()::<lambda()> >::call (f=..., arg=<optimized out>)
at /usr/include/qt6/QtCore/qobjectdefs_impl.h:115
#18 QtPrivate::FunctorCallable<KWin::PointerInputRedirection::init()::<lambda()> >::call<QtPrivate::List<>, void> (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:337
#19 QtPrivate::QCallableObject<KWin::PointerInputRedirection::init()::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *)
(which=<optimized out>, this_=0x55ed948cd8f0, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
at /usr/include/qt6/QtCore/qobjectdefs_impl.h:547
#20 0x00007f2a9cb6033a in QtPrivate::QSlotObjectBase::call
(this=0x55ed948cd8f0, r=0x55ed938c0a70, a=0x7fffd21d8548)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:461
#21 doActivate<false> (sender=0x55ed947aec00, signal_index=3, argv=0x7fffd21d8548)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4138
#22 0x00007f2a9cb6033a in QtPrivate::QSlotObjectBase::call
(this=0x55ed946455d0, r=0x55ed947aec00, a=0x7fffd21d8618)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:461
#23 doActivate<false> (sender=0x55ed9367a5d0, signal_index=4, argv=0x7fffd21d8618)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4138
#24 0x00007f2a9fc260c9 in KWin::SeatInterface::notifyPointerLeave (this=0x55ed93670000)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/wayland/seat.cpp:577
#25 0x00007f2a9f92a818 in KWin::InputDeviceHandler::update (this=0x55ed93788c90)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/input.cpp:3677
#26 KWin::InputDeviceHandler::update (this=0x55ed93788c90)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/input.cpp:3658
#27 0x00007f2a9cb6033a in QtPrivate::QSlotObjectBase::call
(this=0x55ed994e0370, r=0x55ed93788c90, a=0x7fffd21d87c8)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:461
#28 doActivate<false> (sender=0x55ed989e5740, signal_index=8, argv=0x7fffd21d87c8)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4138
#29 0x00007f2a9f95d120 in KWin::LayerShellV1Window::destroyWindow (this=0x55ed989e5740)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/layershellv1window.cpp:212
#30 0x00007f2a9cb6033a in QtPrivate::QSlotObjectBase::call
(this=0x55ed971f46e0, r=0x55ed989e5740, a=0x7fffd21d8960)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:461
#31 doActivate<false> (sender=0x55ed94448ac0, signal_index=19, argv=argv@entry=0x7fffd21d8960)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4138
#32 0x00007f2a9cb56d09 in QMetaObject::activate
(sender=<optimized out>, m=<optimized out>, local_signal_index=local_signal_index@entry=16, argv=argv@entry=0x7fffd21d8960) at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4198
#33 0x00007f2a9fabcfda in QMetaObject::activate<void, KWin::Output*>
(sender=<optimized out>, mo=<optimized out>, local_signal_index=16, ret=0x0, sender=<optimized out>, mo=<optimized out>, local_signal_index=<optimized out>, ret=<optimized out>)
at /usr/include/qt6/QtCore/qobjectdefs.h:306
#34 KWin::Workspace::outputRemoved (this=<optimized out>, _t1=<optimized out>)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/redhat-linux-build/src/kwin_autogen/include/moc_workspace.cpp:662
#35 0x00007f2a9fab6290 in KWin::Workspace::updateOutputs (this=0x55ed94448ac0, outputOrder=<optimized out>)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/workspace.cpp:1325
#36 0x00007f2a9faad613 in KWin::Workspace::applyOutputConfiguration
(this=0x55ed94448ac0, config=..., outputOrder=std::optional = {...})
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/workspace.cpp:511
#37 KWin::Workspace::applyOutputConfiguration
(this=this@entry=0x55ed94448ac0, config=..., outputOrder=std::optional = {...})
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/workspace.cpp:506
#38 0x00007f2a9faada0a in KWin::Workspace::updateOutputConfiguration (this=this@entry=0x55ed94448ac0)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/workspace.cpp:581
#39 0x00007f2a9faae29f in KWin::Workspace::slotOutputBackendOutputsQueried (this=0x55ed94448ac0)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/workspace.cpp:1246
#40 0x00007f2a9cb6033a in QtPrivate::QSlotObjectBase::call
(this=0x55ed94817bf0, r=0x55ed94448ac0, a=0x7fffd21d9288)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:461
#41 doActivate<false> (sender=0x55ed9366fc40, signal_index=3, argv=0x7fffd21d9288)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4138
#42 0x00007f2a9fb2fddf in KWin::DrmBackend::updateOutputs (this=this@entry=0x55ed9366fc40)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/backends/drm/drm_backend.cpp:292
#43 0x00007f2a9fb319d5 in KWin::DrmBackend::handleUdevEvent (this=0x55ed9366fc40)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/backends/drm/drm_backend.cpp:202
#44 0x00007f2a9cb6033a in QtPrivate::QSlotObjectBase::call
(this=0x55ed936831f0, r=0x55ed9366fc40, a=0x7fffd21d9680)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs_impl.h:461
#45 doActivate<false> (sender=0x55ed9374d250, signal_index=3, argv=argv@entry=0x7fffd21d9680)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4138
#46 0x00007f2a9cb56d09 in QMetaObject::activate
(sender=sender@entry=0x55ed93358020, m=m@entry=0x7f2a9d092f40, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffd21d9680)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobject.cpp:4198
#47 0x00007f2a9cb6ee83 in QMetaObject::activate<void, QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal> (sender=0x55ed93358020, mo=0x7f2a9d092f40, local_signal_index=0, ret=0x0)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qobjectdefs.h:306
#48 QSocketNotifier::activated (this=this@entry=0x55ed9374d250, _t1=..., _t2=<optimized out>, _t3=...)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qsocketnotifier.cpp:161
#49 0x00007f2a9cb6f65b in QSocketNotifier::event (this=0x55ed9374d250, e=<optimized out>)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qsocketnotifier.cpp:327
#50 0x00007f2a9de3d7af in QApplicationPrivate::notify_helper
(this=<optimized out>, receiver=0x55ed9374d250, e=0x7fffd21d97d0)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/widgets/kernel/qapplication.cpp:3301
#51 0x00007f2a9caf5fa8 in QCoreApplication::notifyInternal2 (receiver=0x55ed9374d250, event=0x7fffd21d97d0)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1106
#52 0x00007f2a9caf620d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1546
#53 0x00007f2a9ccc0667 in QEventDispatcherUNIXPrivate::activateSocketNotifiers
(this=this@entry=0x55ed93357f80)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qeventdispatcher_unix.cpp:254
#54 0x00007f2a9ccc0fb9 in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qeventdispatcher_unix.cpp:470
#55 0x00007f2a9d8d2e42 in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/gui/platform/unix/qunixeventdispatcher.cpp:27
#56 0x00007f2a9cb03783 in QEventLoop::exec (this=this@entry=0x7fffd21d99a0, flags=..., flags@entry=...)
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/global/qflags.h:77
#57 0x00007f2a9caff229 in QCoreApplication::exec ()
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1449
#58 0x00007f2a9d2dac3d in QGuiApplication::exec ()
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/gui/kernel/qguiapplication.cpp:1993
#59 0x00007f2a9de3d719 in QApplication::exec ()
at /usr/src/debug/qt6-qtbase-6.9.0-2.fc42.x86_64/src/widgets/kernel/qapplication.cpp:2568
#60 0x000055ed6c0bffeb in main (argc=<optimized out>, argv=<optimized out>)
at /usr/src/debug/kwin-6.3.5-1.fc42.x86_64/src/main_wayland.cpp:622
I'm not sure if it's exactly the same issue but the stack trace looked similar enough so I thought I would comment here.
*** Bug 504542 has been marked as a duplicate of this bug. *** *** This bug has been marked as a duplicate of bug 504516 *** |