Bug 513786 - plasmashell aborts on monitor wake-up (DPMS): "KWaylandBackend: no output modes available anymore"
Summary: plasmashell aborts on monitor wake-up (DPMS): "KWaylandBackend: no output mod...
Status: RESOLVED DUPLICATE of bug 511757
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-crash (other bugs)
Version First Reported In: 6.5.4
Platform: unspecified Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2025-12-24 20:01 UTC by Maksym Antonov
Modified: 2025-12-29 17:37 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
New crash information added by DrKonqi (67.39 KB, text/plain)
2025-12-24 20:01 UTC, Maksym Antonov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Maksym Antonov 2025-12-24 20:01:35 UTC
Application: plasmashell (6.5.4)

ApplicationNotResponding [ANR]: false
Qt Version: 6.10.1
Frameworks Version: 6.21.0
Operating System: Linux 6.18.2-1-default x86_64
Windowing System: Wayland
Distribution: "openSUSE Tumbleweed"
DrKonqi: 6.5.4 [CoredumpBackend]

-- Information about the crash:
SUMMARY
Plasmashell consistently crashes (SIGABRT) when the monitor wakes up from power save mode (DPMS). This occurs both after the system idle timeout (45 min) and shortly after locking the screen when the monitor turns off.

Upon waking the monitor, plasmashell aborts immediately with a fatal error pointing to missing output modes.

STEPS TO REPRODUCE
1. Start a Plasma Wayland session with NVIDIA proprietary drivers.
2. Wait for the monitor to enter power save mode (DPMS Off), or lock the screen and wait for turn-off.
3. Wake up the monitor (move mouse/press key).

OBSERVED RESULT
Plasmashell crashes. The backtrace shows a fatal assertion in KWaylandBackend.

FATAL ERROR MESSAGE (from log):
"KWaylandBackend: no output modes available anymore, this seems like a compositor bug"

STACK TRACE SNIPPET:
#12 QMessageLogger::fatal (msg="KWaylandBackend: no output modes available anymore, this seems like a compositor bug")
#13 KScreen::WaylandOutputDevice::kde_output_device_v2_mode
...
#25 QtWayland::kde_output_device_mode_v2::handle_removed

SOFTWARE/OS VERSIONS
Operating System: openSUSE Tumbleweed
KDE Plasma Version: 6.5.4 (Dev/Unstable build detected from logs)
Qt Version: 6.10.1
Graphics Platform: Wayland
GPU: NVIDIA GeForce RTX 3080
NVIDIA Driver: 580.119.02

ADDITIONAL INFORMATION
It appears that upon waking up, the driver momentarily reports an empty list of modes for the output, causing the KWayland backend to trigger a fatal assertion.

The crash can be reproduced every time.

-- Backtrace (Reduced):
#5  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6  0x00007f1597a9de33 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89
#7  0x00007f1597a427b6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x00007f1597a2934b in __GI_abort () at abort.c:77
#9  0x00007f15982f668b in qAbort () at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/global/qassert.cpp:46
#10 qt_maybe_message_fatal<QString&> (msgType=QtFatalMsg, context=<optimized out>, message=...) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/global/qlogging.cpp:2166
[...]
#12 0x00007f15982f722f in QMessageLogger::fatal (this=this@entry=0x7ffe1bac37c0, msg=msg@entry=0x7f157003d6d0 "KWaylandBackend: no output modes available anymore, this seems like a compositor bug") at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/global/qlogging.cpp:901
#13 0x00007f157002de48 in operator() (__closure=<optimized out>) at /usr/src/debug/libkscreen-6.5.4/backends/kwayland/waylandoutputdevice.cpp:73
#14 operator() (__closure=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116
#18 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
#19 0x00007f1598435b20 in QtPrivate::QSlotObjectBase::call (this=0x55a8863b6540, r=<optimized out>, a=0x7ffe1bac3878) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qobjectdefs_impl.h:461
#20 doActivate<false> (sender=0x55a88639cd80, signal_index=3, argv=0x7ffe1bac3878) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qobject.cpp:4257
#21 0x00007f159a407c92 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#22 0x00007f159a404a26 in ffi_call_int (cif=cif@entry=0x7ffe1bac3a80, fn=fn@entry=0x7f157002e1c0 <QtWayland::kde_output_device_mode_v2::handle_removed(void*, kde_output_device_mode_v2*)>, rvalue=<optimized out>, rvalue@entry=0x0, avalue=avalue@entry=0x7ffe1bac3b50, closure=closure@entry=0x0) at ../src/x86/ffi64.c:676
#23 0x00007f159a4072ae in ffi_call (cif=cif@entry=0x7ffe1bac3a80, fn=0x7f157002e1c0 <QtWayland::kde_output_device_mode_v2::handle_removed(void*, kde_output_device_mode_v2*)>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffe1bac3b50) at ../src/x86/ffi64.c:713
#24 0x00007f159b1947f3 in wl_closure_invoke (closure=closure@entry=0x7f158800ca40, target=<optimized out>, target@entry=0x7f158800bc00, opcode=opcode@entry=3, data=<optimized out>, flags=1) at ../src/connection.c:1241


Reported using DrKonqi
Comment 1 Maksym Antonov 2025-12-24 20:01:36 UTC
Created attachment 187951 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 TraceyC 2025-12-29 17:25:47 UTC
Full backtrace of the crashing thread


Thread 1 (Thread 0x7f159377bc40 (LWP 1886)):
[KCrash Handler]
#5  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6  0x00007f1597a9de33 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89
#7  0x00007f1597a427b6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x00007f1597a2934b in __GI_abort () at abort.c:77
#9  0x00007f15982f668b in qAbort () at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/global/qassert.cpp:46
#10 qt_maybe_message_fatal<QString&> (msgType=QtFatalMsg, context=<optimized out>, message=...) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/global/qlogging.cpp:2166
#11 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=msg@entry=0x7f157003d6d0 "KWaylandBackend: no output modes available anymore, this seems like a compositor bug", ap=ap@entry=0x7ffe1bac3568) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/global/qlogging.cpp:412
#12 0x00007f15982f722f in QMessageLogger::fatal (this=this@entry=0x7ffe1bac37c0, msg=msg@entry=0x7f157003d6d0 "KWaylandBackend: no output modes available anymore, this seems like a compositor bug") at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/global/qlogging.cpp:901
#13 0x00007f157002de48 in operator() (__closure=<optimized out>) at /usr/src/debug/libkscreen-6.5.4/backends/kwayland/waylandoutputdevice.cpp:73
#14 operator() (__closure=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116
#15 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=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65
#16 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=<optimized out>, arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:115
#17 QtPrivate::FunctorCallable<KScreen::WaylandOutputDevice::kde_output_device_v2_mode(kde_output_device_mode_v2*)::<lambda()> >::call<QtPrivate::List<>, void> (f=<optimized out>, arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:337
#18 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
#19 0x00007f1598435b20 in QtPrivate::QSlotObjectBase::call (this=0x55a8863b6540, r=<optimized out>, a=0x7ffe1bac3878) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qobjectdefs_impl.h:461
#20 doActivate<false> (sender=0x55a88639cd80, signal_index=3, argv=0x7ffe1bac3878) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qobject.cpp:4257
#21 0x00007f159a407c92 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#22 0x00007f159a404a26 in ffi_call_int (cif=cif@entry=0x7ffe1bac3a80, fn=fn@entry=0x7f157002e1c0 <QtWayland::kde_output_device_mode_v2::handle_removed(void*, kde_output_device_mode_v2*)>, rvalue=<optimized out>, rvalue@entry=0x0, avalue=avalue@entry=0x7ffe1bac3b50, closure=closure@entry=0x0) at ../src/x86/ffi64.c:676
#23 0x00007f159a4072ae in ffi_call (cif=cif@entry=0x7ffe1bac3a80, fn=0x7f157002e1c0 <QtWayland::kde_output_device_mode_v2::handle_removed(void*, kde_output_device_mode_v2*)>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffe1bac3b50) at ../src/x86/ffi64.c:713
#24 0x00007f159b1947f3 in wl_closure_invoke (closure=closure@entry=0x7f158800ca40, target=<optimized out>, target@entry=0x7f158800bc00, opcode=opcode@entry=3, data=<optimized out>, flags=1) at ../src/connection.c:1241
#25 0x00007f159b195539 in dispatch_event (display=display@entry=0x55a88543d1f0, queue=queue@entry=0x55a88543d2e8) at ../src/wayland-client.c:1707
#26 0x00007f159b1958eb in dispatch_queue (display=0x55a88543d1f0, queue=0x55a88543d2e8) at ../src/wayland-client.c:1853
#27 wl_display_dispatch_queue_pending (display=0x55a88543d1f0, queue=0x55a88543d2e8) at ../src/wayland-client.c:2190
#28 0x00007f15994e02e2 in QtWaylandClient::QWaylandDisplay::flushRequests (this=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/plugins/platforms/wayland/qwaylanddisplay.cpp:230
#29 0x00007f15984239c4 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qobject.cpp:1413
#30 0x00007f159a7e7a78 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55a88543cfc0, e=0x7f1584005000) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/widgets/kernel/qapplication.cpp:3305
#31 0x00007f15983ce298 in QCoreApplication::notifyInternal2 (receiver=0x55a88543cfc0, event=0x7f1584005000) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1109
#32 0x00007f15983ce2dd in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1549
#33 0x00007f15983d093a in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x55a88542f650) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1904
#34 0x00007f159868ee07 in postEventSourceDispatch (s=s@entry=0x55a88543ae20) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#35 0x00007f1596c5fb36 in g_main_dispatch (context=0x7f158c000f60) at ../glib/gmain.c:3565
#36 g_main_context_dispatch_unlocked (context=context@entry=0x7f158c000f60) at ../glib/gmain.c:4425
#37 0x00007f1596c62a28 in g_main_context_iterate_unlocked (context=context@entry=0x7f158c000f60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4490
#38 0x00007f1596c6326c in g_main_context_iteration (context=0x7f158c000f60, may_block=1) at ../glib/gmain.c:4556
#39 0x00007f159868ca28 in QEventDispatcherGlib::processEvents (this=0x55a88543a730, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#40 0x00007f15983dc1ab in QEventLoop::exec (this=0x7ffe1bac40f0, flags=...) at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/global/qflags.h:77
#41 0x00007f15983d3183 in QCoreApplication::exec () at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/corelib/kernel/qcoreapplication.cpp:1452
#42 0x00007f1598c2a3b0 in QGuiApplication::exec () at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/gui/kernel/qguiapplication.cpp:1973
#43 0x00007f159a7e2f59 in QApplication::exec () at /usr/src/debug/qtbase-everywhere-src-6.10.1/src/widgets/kernel/qapplication.cpp:2575
#44 0x000055a84c7f0298 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/plasma-workspace-6.5.4/shell/main.cpp:188
Comment 3 TraceyC 2025-12-29 17:37:15 UTC
Thank you for the bug report. Based on the backtrace this looks like a duplicate of bug 511757. Please follow that report if you would like updates on the progress of this issue.

*** This bug has been marked as a duplicate of bug 511757 ***