Bug 510323

Summary: powerdevil crashes in KScreen::WaylandOutputDevice::kde_output_device_v2_mode() after waking up system with different number of screens
Product: [Plasma] kwin Reporter: Nate Graham <nate>
Component: output configurationAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED DUPLICATE    
Severity: crash CC: kdedev, nicolas.fella, roger, xaver.hugl
Priority: NOR Keywords: multiscreen
Version First Reported In: 6.5.80   
Target Milestone: ---   
Platform: KDE Linux   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=496589
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Nate Graham 2025-10-06 21:49:49 UTC
STEPS TO REPRODUCE
1. Have two screens (Laptop: 2880x1800 @ 175% + desktop: 2560x1440 @ 100%)
2. Put the computer to sleep using Kickoff > Sleep
3. Some time later, while the laptop is still asleep, close the lid and unplug the external screen
4. A very short time later, open the laptop lid to wake it up, and unlock the lock screen


OBSERVED RESULT
powerdevil crashes with a message saying  "KWaylandBackend: no output modes available anymore, this seems like a compositor bug"

Full backtrace:

Thread 1 (Thread 0x7fd878371b00 (LWP 286149)):
[KCrash Handler]
#4  __pthread_kill_implementation (threadid=<optimized out>, signo=6, no_tid=<optimized out>) at pthread_kill.c:44
#5  0x00007fd87d24d410 in __GI_raise (sig=6) at ../sysdeps/posix/raise.c:26
#6  0x00007fd87d23457a in __GI_abort () at abort.c:77
#7  0x00007fd87da19217 in qAbort () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qassert.cpp:46
#8  qt_message_fatal<QString&> (context=..., message=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qlogging.cpp:2149
#9  qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=msg@entry=0x7fd85f7f5528 "KWaylandBackend: no output modes available anymore, this seems like a compositor bug", ap=ap@entry=0x7fffc687b618) at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qlogging.cpp:381
#10 0x00007fd87da1a0ec in QMessageLogger::fatal (this=this@entry=0x7fffc687b870, msg=msg@entry=0x7fd85f7f5528 "KWaylandBackend: no output modes available anymore, this seems like a compositor bug") at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qlogging.cpp:883
#11 0x00007fd85f7e4e2f in operator() (__closure=<optimized out>) at /home/nate/kde/src/libkscreen/backends/kwayland/waylandoutputdevice.cpp:73
#12 operator() (__closure=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116
#13 QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, KScreen::WaylandOutputDevice::kde_output_device_v2_mode(kde_output_device_mode_v2*)::<lambda()> >::call(KScreen::WaylandOutputDevice::kde_output_device_v2_mode(kde_output_device_mode_v2*)::<lambda()>&, void**)::<lambda()> > (args=<optimized out>, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65
#14 QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, KScreen::WaylandOutputDevice::kde_output_device_v2_mode(kde_output_device_mode_v2*)::<lambda()> >::call (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:115
#15 QtPrivate::FunctorCallable<KScreen::WaylandOutputDevice::kde_output_device_v2_mode(kde_output_device_mode_v2*)::<lambda()> >::call<QtPrivate::List<>, void> (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:337
#16 QtPrivate::QCallableObject<KScreen::WaylandOutputDevice::kde_output_device_v2_mode(kde_output_device_mode_v2*)::<lambda()>, 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:547
#17 0x00007fd87db5c66f in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
#18 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4157
#19 0x00007fd87b9fdac6 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#20 0x00007fd87b9fa76b in ffi_call_int (cif=cif@entry=0x7fffc687bb30, fn=fn@entry=0x7fd85f7e5500 <QtWayland::kde_output_device_mode_v2::handle_removed(void*, kde_output_device_mode_v2*)>, rvalue=<optimized out>, rvalue@entry=0x0, avalue=avalue@entry=0x7fffc687bc00, closure=closure@entry=0x0) at ../src/x86/ffi64.c:676
#21 0x00007fd87b9fd06e in ffi_call (cif=cif@entry=0x7fffc687bb30, fn=0x7fd85f7e5500 <QtWayland::kde_output_device_mode_v2::handle_removed(void*, kde_output_device_mode_v2*)>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7fffc687bc00) at ../src/x86/ffi64.c:713
#22 0x00007fd87d92748d in wl_closure_invoke (closure=closure@entry=0x7fd86c005260, target=<optimized out>, target@entry=0x7fd86c011b60, opcode=opcode@entry=3, data=<optimized out>, flags=1) at ../wayland-1.24.0/src/connection.c:1241
#23 0x00007fd87d9282e9 in dispatch_event (display=display@entry=0x555885b9d560, queue=queue@entry=0x555885b9d658) at ../wayland-1.24.0/src/wayland-client.c:1707
#24 0x00007fd87d9286f3 in dispatch_queue (display=0x555885b9d560, queue=0x555885b9d658) at ../wayland-1.24.0/src/wayland-client.c:1853
#25 wl_display_dispatch_queue_pending (display=0x555885b9d560, queue=0x555885b9d658) at ../wayland-1.24.0/src/wayland-client.c:2190
#26 0x00007fd87e9d9536 in QtWaylandClient::QWaylandDisplay::flushRequests (this=<optimized out>) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylanddisplay.cpp:228
#27 0x00007fd87db49a74 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1432
#28 0x00007fd87daf0678 in QCoreApplication::notifyInternal2 (receiver=0x555885b9d330, event=event@entry=0x7fd868002600) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1106
#29 0x00007fd87daf0a5b in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x7fd868002600) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1546
#30 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x555885b70070) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1891
#31 0x00007fd87ddcb7f8 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1744
#32 postEventSourceDispatch (s=0x555885b79930) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#33 0x00007fd87c4f9880 in g_main_dispatch (context=0x7fd870000f70) at ../glib/glib/gmain.c:3398
#34 0x00007fd87c4facd7 in g_main_context_dispatch_unlocked (context=0x7fd870000f70) at ../glib/glib/gmain.c:4249
#35 g_main_context_iterate_unlocked (context=context@entry=0x7fd870000f70, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4314
#36 0x00007fd87c4faee5 in g_main_context_iteration (context=0x7fd870000f70, may_block=1) at ../glib/glib/gmain.c:4379
#37 0x00007fd87ddc7fe2 in QEventDispatcherGlib::processEvents (this=0x555885b798d0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#38 0x00007fd87dafcca6 in QEventLoop::processEvents (this=0x7fffc687c210, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104
#39 QEventLoop::exec (this=0x7fffc687c210, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186
#40 0x00007fd87daf4d21 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1449
#41 0x000055584a8671b0 in main (argc=<optimized out>, argv=<optimized out>) at /home/nate/kde/src/powerdevil/daemon/powerdevilapp.cpp:132


SOFTWARE/OS VERSIONS
Operating System: KDE Linux 2025-09-25
KDE Plasma Version: 6.5.80
KDE Frameworks Version: 6.20.0
Qt Version: 6.9.2
Kernel Version: 6.16.8-arch1-1 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 7840U w/ Radeon™ 780M Graphics
Memory: 16 GiB of RAM (14.9 GiB usable)
Graphics Processor: AMD Radeon 780M Graphics
Comment 1 TraceyC 2025-10-17 19:48:16 UTC
This seems similar to bug 496589, but the backtraces are somewhat different
Comment 2 Zamundaaa 2025-10-20 12:21:22 UTC
I'm reasonably sure both are the same as bug 510734 / fixed by the same MR

*** This bug has been marked as a duplicate of bug 510734 ***
Comment 3 Nicolas Fella 2025-10-27 19:48:29 UTC
*** Bug 511099 has been marked as a duplicate of this bug. ***