Bug 470484 - Powerdevil crashes in QtWayland::org_kde_kwin_dpms::set() multiple times during screen sleep
Summary: Powerdevil crashes in QtWayland::org_kde_kwin_dpms::set() multiple times duri...
Status: RESOLVED FIXED
Alias: None
Product: Powerdevil
Classification: Plasma
Component: general (show other bugs)
Version: 5.27.5
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords: wayland
Depends on:
Blocks:
 
Reported: 2023-05-31 12:28 UTC by MScattolin
Modified: 2023-06-17 03:46 UTC (History)
7 users (show)

See Also:
Latest Commit:
Version Fixed In: 5.27.6


Attachments
dr konqi screenshot (94.90 KB, image/jpeg)
2023-05-31 12:28 UTC, MScattolin
Details

Note You need to log in before you can comment on or make changes to this bug.
Description MScattolin 2023-05-31 12:28:11 UTC
Created attachment 159367 [details]
dr konqi screenshot

SUMMARY
Every day when I leave my computer idle with the screen powered off, powerdevil keeps regularly crashing and dumping core
It's a desktop and it's not configured to suspend after a certain time

STEPS TO REPRODUCE
1. turn off the computer monitor
2. wait
3. powerdevil will have crashed multiple times, plasma seems unaffected 

OBSERVED RESULT
System log will be filled with stack traces from powerdevil

EXPECTED RESULT
Same but without crashes

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 6.3.3
KDE Plasma Version: 5.27.5
KDE Frameworks Version: 5.106.0
Qt Version: 5.15.9

ADDITIONAL INFORMATION
I'm using plasma on wayland, with a radeon GPU, mesa drivers and one monitor connected through displayport
Taking a look at those crashes on dr konqi, I noticed that every crash happens around 25min from each other. It's the same amount of time I have set on powerdevil's KCM for screen switch off

STACK TRACE
                Stack trace of thread 110517:
                #0  0x00007f54074a43c8 __GI___pthread_sigmask (libc.so.6 + 0x8e3c8)
                #1  0x00007f540744fcad __GI___sigprocmask (libc.so.6 + 0x39cad)
                #2  0x00007f5408a7820b _ZN6KCrash15setCrashHandlerEPFviE (libKF5Crash.so.5 + 0x520b)
                #3  0x00007f5408a7a816 _ZN6KCrash19defaultCrashHandlerEi (libKF5Crash.so.5 + 0x7816)
                #4  0x00007f540744fab0 __restore_rt (libc.so.6 + 0x39ab0)
                #5  0x00007f540011a97c _ZN9QtWayland17org_kde_kwin_dpms3setEj (libKF5ScreenDpms.so.8 + 0x797c)
                #6  0x00007f540011bcc4 _ZN7KScreen4Dpms10switchModeENS0_4ModeERK5QListIP7QScreenE (libKF5ScreenDpms.so.8 + 0x8cc4)
                #7  0x00007f54001266ca _ZN10PowerDevil14BundledActions4DPMS13onIdleTimeoutEi (powerdevil_dpmsaction.so + 0x56ca)
                #8  0x00007f5408a45a51 _ZN10PowerDevil4Core21onKIdleTimeoutReachedEii (libpowerdevilcore.so.2 + 0x17a51)
                #9  0x00007f5407cd01a3 _Z10doActivateILb0EEvP7QObjectiPPv (libQt5Core.so.5 + 0x2d01a3)
                #10 0x00007f540869833d _ZN9KIdleTime14timeoutReachedEii (libKF5IdleTime.so.5 + 0x433d)
                #11 0x00007f5408698ee1 _ZN9QtPrivate18QFunctorSlotObjectIZN9KIdleTimeC4EvEUliE_Li1ENS_4ListIJiEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb (libKF5IdleTime.so.5 + 0x4ee1)
                #12 0x00007f5407ccffe7 _ZN9QtPrivate15QSlotObjectBase4callEP7QObjectPPv (libQt5Core.so.5 + 0x2cffe7)
                #13 0x00007f5408698226 _ZN20AbstractSystemPoller14timeoutReachedEi (libKF5IdleTime.so.5 + 0x4226)
                #14 0x00007f5407ccffe7 _ZN9QtPrivate15QSlotObjectBase4callEP7QObjectPPv (libQt5Core.so.5 + 0x2cffe7)
                #15 0x00007f5408a8e4f6 n/a (libffi.so.8 + 0x74f6)
                #16 0x00007f5408a8af5e n/a (libffi.so.8 + 0x3f5e)
                #17 0x00007f5408a8db73 ffi_call (libffi.so.8 + 0x6b73)
                #18 0x00007f5408a99645 wl_closure_invoke (libwayland-client.so.0 + 0x7645)
                #19 0x00007f5408a99e73 dispatch_event (libwayland-client.so.0 + 0x7e73)
                #20 0x00007f5408a9a13c dispatch_queue (libwayland-client.so.0 + 0x813c)
                #21 0x00007f54024efc06 _ZN15QtWaylandClient15QWaylandDisplay13flushRequestsEv (libQt5WaylandClient.so.5 + 0x72c06)
                #22 0x00007f5407cc2834 _ZN7QObject5eventEP6QEvent (libQt5Core.so.5 + 0x2c2834)
                #23 0x00007f5407c9ab18 _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent (libQt5Core.so.5 + 0x29ab18)
                #24 0x00007f5407c9fa7b _ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData (libQt5Core.so.5 + 0x29fa7b)
                #25 0x00007f5407ce6088 postEventSourceDispatch (libQt5Core.so.5 + 0x2e6088)
                #26 0x00007f5406710981 g_main_context_dispatch (libglib-2.0.so.0 + 0x5a981)
                #27 0x00007f540676db39 n/a (libglib-2.0.so.0 + 0xb7b39)
                #28 0x00007f540670e032 g_main_context_iteration (libglib-2.0.so.0 + 0x58032)
                #29 0x00007f5407ce9f0c _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5 + 0x2e9f0c)
                #30 0x00007f5407c99824 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5 + 0x299824)
                #31 0x00007f5407c9acc3 _ZN16QCoreApplication4execEv (libQt5Core.so.5 + 0x29acc3)
                #32 0x000055b03f1831e8 main (org_kde_powerdevil + 0x61e8)
                #33 0x00007f5407439850 __libc_start_call_main (libc.so.6 + 0x23850)
                #34 0x00007f540743990a __libc_start_main_impl (libc.so.6 + 0x2390a)
                #35 0x000055b03f183255 _start (org_kde_powerdevil + 0x6255)
                
                Stack trace of thread 110520:
                #0  0x00007f5407513c0f __GI___poll (libc.so.6 + 0xfdc0f)
                #1  0x00007f54024efd2d _ZN15QtWaylandClient11EventThread3runEv (libQt5WaylandClient.so.5 + 0x72d2d)
                #2  0x00007f5407af30da operator() (libQt5Core.so.5 + 0xf30da)
                #3  0x00007f540749d44b start_thread (libc.so.6 + 0x8744b)
                #4  0x00007f5407520e40 __clone3 (libc.so.6 + 0x10ae40)
                
                Stack trace of thread 110549:
                #0  0x00007f5407516571 pselect64_syscall (libc.so.6 + 0x100571)
                #1  0x00007f54064e56f9 n/a (libusbmuxd-2.0.so.6 + 0x36f9)
                #2  0x00007f54064e63cc n/a (libusbmuxd-2.0.so.6 + 0x43cc)
                #3  0x00007f540749d44b start_thread (libc.so.6 + 0x8744b)
                #4  0x00007f5407520e40 __clone3 (libc.so.6 + 0x10ae40)
                
                Stack trace of thread 110523:
                #0  0x00007f5407513c0f __GI___poll (libc.so.6 + 0xfdc0f)
                #1  0x00007f540676da9f n/a (libglib-2.0.so.0 + 0xb7a9f)
                #2  0x00007f540670ff3f g_main_loop_run (libglib-2.0.so.0 + 0x59f3f)
                #3  0x00007f5400ab528c n/a (libgio-2.0.so.0 + 0x11028c)
                #4  0x00007f5406742cc5 n/a (libglib-2.0.so.0 + 0x8ccc5)
                #5  0x00007f540749d44b start_thread (libc.so.6 + 0x8744b)
                #6  0x00007f5407520e40 __clone3 (libc.so.6 + 0x10ae40)
                
                Stack trace of thread 110518:
                #0  0x00007f5407513c0f __GI___poll (libc.so.6 + 0xfdc0f)
                #1  0x00007f540676da9f n/a (libglib-2.0.so.0 + 0xb7a9f)
                #2  0x00007f540670e032 g_main_context_iteration (libglib-2.0.so.0 + 0x58032)
                #3  0x00007f5407ce9f2f _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5 + 0x2e9f2f)
                #4  0x00007f5407c99824 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5 + 0x299824)
                #5  0x00007f5407af6eb6 _ZN7QThread4execEv (libQt5Core.so.5 + 0xf6eb6)
                #6  0x00007f540881069a _ZN22QDBusConnectionManager3runEv (libQt5DBus.so.5 + 0x2469a)
                #7  0x00007f5407af30da operator() (libQt5Core.so.5 + 0xf30da)
                #8  0x00007f540749d44b start_thread (libc.so.6 + 0x8744b)
                #9  0x00007f5407520e40 __clone3 (libc.so.6 + 0x10ae40)
                
                Stack trace of thread 110522:
                #0  0x00007f5407513c0f __GI___poll (libc.so.6 + 0xfdc0f)
                #1  0x00007f540676da9f n/a (libglib-2.0.so.0 + 0xb7a9f)
                #2  0x00007f540670e032 g_main_context_iteration (libglib-2.0.so.0 + 0x58032)
                #3  0x00007f540670e082 n/a (libglib-2.0.so.0 + 0x58082)
                #4  0x00007f5406742cc5 n/a (libglib-2.0.so.0 + 0x8ccc5)
                #5  0x00007f540749d44b start_thread (libc.so.6 + 0x8744b)
                #6  0x00007f5407520e40 __clone3 (libc.so.6 + 0x10ae40)
                
                Stack trace of thread 110521:
                #0  0x00007f54075192ed syscall (libc.so.6 + 0x1032ed)
                #1  0x00007f5406765b85 g_cond_wait (libglib-2.0.so.0 + 0xafb85)
                #2  0x00007f54066db094 n/a (libglib-2.0.so.0 + 0x25094)
                #3  0x00007f540674524e n/a (libglib-2.0.so.0 + 0x8f24e)
                #4  0x00007f5406742cc5 n/a (libglib-2.0.so.0 + 0x8ccc5)
                #5  0x00007f540749d44b start_thread (libc.so.6 + 0x8744b)
                #6  0x00007f5407520e40 __clone3 (libc.so.6 + 0x10ae40)
                
                Stack trace of thread 110519:
                #0  0x00007f5407499f0e __futex_abstimed_wait_common64 (libc.so.6 + 0x83f0e)
                #1  0x00007f540749c7a0 __pthread_cond_wait_common (libc.so.6 + 0x867a0)
                #2  0x00007f5407afae64 _ZN21QWaitConditionPrivate4waitE14QDeadlineTimer (libQt5Core.so.5 + 0xfae64)
                #3  0x00007f54024efcd4 _ZN15QtWaylandClient11EventThread3runEv (libQt5WaylandClient.so.5 + 0x72cd4)
                #4  0x00007f5407af30da operator() (libQt5Core.so.5 + 0xf30da)
                #5  0x00007f540749d44b start_thread (libc.so.6 + 0x8744b)
                #6  0x00007f5407520e40 __clone3 (libc.so.6 + 0x10ae40)
                ELF object binary architecture: AMD x86-64
Comment 1 Nicolas Fella 2023-06-01 23:02:48 UTC
Can you please follow https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports#Retrieving_a_backtrace_using_coredumpctl to get a proper backtrace? The one you pasted is missing demangling and debug symbols to be fully useful
Comment 2 MScattolin 2023-06-02 22:28:17 UTC
(In reply to Nicolas Fella from comment #1)
> Can you please follow
> https://community.kde.org/Guidelines_and_HOWTOs/Debugging/
> How_to_create_useful_crash_reports#Retrieving_a_backtrace_using_coredumpctl
> to get a proper backtrace? The one you pasted is missing demangling and
> debug symbols to be fully useful

Hello, sure, got the following from the latest coredump:

#0  __GI___pthread_sigmask (how=1, newmask=<optimized out>, oldmask=0x0) at pthread_sigmask.c:43
#1  0x00007fd6e264fcad in __GI___sigprocmask (how=<optimized out>, set=<optimized out>, oset=<optimized out>) at ../sysdeps/unix/sysv/linux/sigprocmask.c:25
#2  0x00007fd6e3c5520b in KCrash::setCrashHandler(void (*)(int)) (handler=handler@entry=0x0) at /usr/src/debug/kcrash/kcrash-5.106.0/src/kcrash.cpp:414
#3  0x00007fd6e3c57816 in KCrash::defaultCrashHandler(int) (sig=11) at /usr/src/debug/kcrash/kcrash-5.106.0/src/kcrash.cpp:625
#4  0x00007fd6e264fab0 in <signal handler called> () at /usr/lib/libc.so.6
#5  QtWayland::org_kde_kwin_dpms::set(unsigned int) (mode=<optimized out>, this=0x10) at /usr/src/debug/libkscreen/build/src/libdpms/qwayland-dpms.cpp:126
#6  WaylandDpmsHelper::trigger(KScreen::Dpms::Mode, QList<QScreen*> const&) (this=0x559b6a7b7380, mode=<optimized out>, screens=<optimized out>)
    at /usr/src/debug/libkscreen/libkscreen-5.27.5/src/libdpms/waylanddpmshelper.cpp:191
#7  0x00007fd6dc2ffcc4 in KScreen::Dpms::switchMode(KScreen::Dpms::Mode, QList<QScreen*> const&)
    (this=<optimized out>, mode=mode@entry=KScreen::Dpms::Off, screens=...) at /usr/src/debug/libkscreen/libkscreen-5.27.5/src/libdpms/dpms.cpp:40
#8  0x00007fd6dc30a6ca in PowerDevil::BundledActions::DPMS::onIdleTimeout(int) (this=<optimized out>, msec=<optimized out>)
    at /usr/src/debug/powerdevil/powerdevil-5.27.5/daemon/actions/bundled/dpms.cpp:135
#9  0x00007fd6e3c22a51 in PowerDevil::Core::onKIdleTimeoutReached(int, int) (this=0x559b6a7606b0, identifier=1, msec=1500000)
    at /usr/src/debug/powerdevil/powerdevil-5.27.5/daemon/powerdevilcore.cpp:840
#10 0x00007fd6e2ed01a3 in doActivate<false>(QObject*, int, void**) (sender=0x559b6a759570, signal_index=5, argv=0x7ffc3e8201a0) at kernel/qobject.cpp:3935
#11 0x00007fd6e31c433d in KIdleTime::timeoutReached(int, int) (this=this@entry=0x559b6a759570, _t1=<optimized out>, _t1@entry=1, _t2=<optimized out>, 
    _t2@entry=1500000) at /usr/src/debug/kidletime/build/src/KF5IdleTime_autogen/include/moc_kidletime.cpp:195
#12 0x00007fd6e31c4ee1 in KIdleTimePrivate::timeoutReached(int) (msec=1500000, this=<optimized out>)
    at /usr/src/debug/kidletime/kidletime-5.106.0/src/kidletime.cpp:297
#13 operator() (msec=1500000, __closure=<optimized out>) at /usr/src/debug/kidletime/kidletime-5.106.0/src/kidletime.cpp:88
#14 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, KIdleTime::KIdleTime()::<lambda(int)> >::call
    (arg=<optimized out>, f=<optimized out>) at /usr/include/qt/QtCore/qobjectdefs_impl.h:146
#15 QtPrivate::Functor<KIdleTime::KIdleTime()::<lambda(int)>, 1>::call<QtPrivate::List<int>, void> (arg=<optimized out>, f=<optimized out>)
    at /usr/include/qt/QtCore/qobjectdefs_impl.h:256
#16 QtPrivate::QFunctorSlotObject<KIdleTime::KIdleTime()::<lambda(int)>, 1, QtPrivate::List<int>, 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/qt/QtCore/qobjectdefs_impl.h:443
#17 0x00007fd6e2ecffe7 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffc3e8202f0, r=<optimized out>, this=0x559b6a7b2c30, this=<optimized out>, r=<optimized out>, a=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#18 doActivate<false>(QObject*, int, void**) (sender=0x559b6a81b3f0, signal_index=4, argv=0x7ffc3e8202f0) at kernel/qobject.cpp:3923
#19 0x00007fd6e31c4226 in AbstractSystemPoller::timeoutReached(int) (this=<optimized out>, _t1=<optimized out>)
    at /usr/src/debug/kidletime/build/src/KF5IdleTime_autogen/EWIEGA46WW/moc_abstractsystempoller.cpp:189
#20 0x00007fd6e2ecffe7 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffc3e8203a0, r=<optimized out>, this=0x559b6a76c5b0, this=<optimized out>, r=<optimized out>, a=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#21 doActivate<false>(QObject*, int, void**) (sender=0x7fd6d8026640, signal_index=3, argv=0x7ffc3e8203a0) at kernel/qobject.cpp:3923
#22 0x00007fd6e3c6b4f6 in  () at /usr/lib/libffi.so.8
#23 0x00007fd6e3c67f5e in  () at /usr/lib/libffi.so.8
#24 0x00007fd6e3c6ab73 in ffi_call () at /usr/lib/libffi.so.8
#25 0x00007fd6e3c76645 in wl_closure_invoke (closure=closure@entry=0x7fd6d0001980, target=<optimized out>, 
    target@entry=0x559b6a848860, opcode=opcode@entry=0, data=<optimized out>, flags=1) at ../wayland-1.22.0/src/connection.c:1025
#26 0x00007fd6e3c76e73 in dispatch_event (display=display@entry=0x559b6a753100, queue=0x559b6a7531f0) at ../wayland-1.22.0/src/wayland-client.c:1631
#27 0x00007fd6e3c7713c in dispatch_queue (queue=0x559b6a7531f0, display=0x559b6a753100) at ../wayland-1.22.0/src/wayland-client.c:1777
#28 wl_display_dispatch_queue_pending (display=0x559b6a753100, queue=0x559b6a7531f0) at ../wayland-1.22.0/src/wayland-client.c:2019
#29 0x00007fd6dd6efc06 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=<optimized out>)
    at /usr/src/debug/qt5-wayland/qtwayland/src/client/qwaylanddisplay.cpp:255
#30 0x00007fd6e2ec2834 in QObject::event(QEvent*) (this=0x559b6a752fa0, e=0x7fd6d0001b90) at kernel/qobject.cpp:1347
#31 0x00007fd6e2e9ab18 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x559b6a752fa0, event=0x7fd6d0001b90)
    at kernel/qcoreapplication.cpp:1064
#32 0x00007fd6e2e9fa7b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x559b6a747fd0)
    at kernel/qcoreapplication.cpp:1821
#33 0x00007fd6e2ee6088 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x559b6a75b070) at kernel/qeventdispatcher_glib.cpp:277
#34 0x00007fd6e1910981 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#35 0x00007fd6e196db39 in  () at /usr/lib/libglib-2.0.so.0
#36 0x00007fd6e190e032 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#37 0x00007fd6e2ee9f0c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x559b6a75c030, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
#38 0x00007fd6e2e99824 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffc3e820c20, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#39 0x00007fd6e2e9acc3 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#40 0x00007fd6e333b7c2 in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1870
#41 0x0000559b697461e8 in main(int, char**) (argc=<optimized out>, argv=<optimized out>)
    at /usr/src/debug/powerdevil/powerdevil-5.27.5/daemon/powerdevilapp.cpp:178
Comment 3 ratijas 2023-06-02 23:08:57 UTC
here,

> #5  QtWayland::org_kde_kwin_dpms::set(unsigned int) (mode=<optimized out>,
this=0x10) at /usr/src/debug/libkscreen/build/src/libdpms/qwayland-dpms.cpp:126

`this` is a null pointer, although incremented by 0x10 probably to account for nested object layout within inheritance hierarchy of C++:

> class Dpms : public QObject, public QtWayland::org_kde_kwin_dpms

Perhaps, this call should be guarded?

> void WaylandDpmsHelper::trigger(KScreen::Dpms::Mode mode, const QList<QScreen *> &screens)
> {
>     // ...
>     for (auto screen : screens) {
>         auto dpms = m_dpmsManager->fetch(screen);
>         dpms->set(level);
>     }

Because having an output per se does not seem to guarantee the existence of a Dpms object available for fetch:

>     Dpms *fetch(QScreen *screen)
>     {
>         return m_dpmsPerScreen.value(screen);
>     }
> 
> private:
>     void addScreen(QScreen *screen)
>     {
>         // We can't rely on checking the wl_output being null yet
>         // https://codereview.qt-project.org/c/qt/qtwayland/+/464669
>         const bool fake = screen->geometry().isEmpty() || screen->name().isEmpty();
>         if (fake) {
>             return;
>         }
> 
>         QPlatformNativeInterface *native = qGuiApp->platformNativeInterface();
>         wl_output *output = reinterpret_cast<wl_output *>(native->nativeResourceForScreen(QByteArrayLiteral("output"), screen));
>         if (output) {
>             m_dpmsPerScreen[screen] = new Dpms(get(output), m_dpms, screen);
>         }
>     }

As you can see there are several conditions under which `m_dpmsPerScreen` hash map would be left without a value for some given screen.
Comment 4 Bug Janitor Service 2023-06-10 00:51:15 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/libkscreen/-/merge_requests/139
Comment 5 Aleix Pol 2023-06-13 08:36:07 UTC
Git commit 830f166a1246b6dc77913c930bb0ffb8f5fc6341 by Aleix Pol Gonzalez, on behalf of Aleix Pol.
Committed on 13/06/2023 at 08:34.
Pushed by apol into branch 'master'.

dpms: Don't crash if trying to interact with the fake screen

Qt uses at time a fake QScreen instance that isn't mirrored on Wayland.
This makes our code receive an output it does not expect.
Solve it by not attempting at setting the dpms on such outputs.

M  +4    -2    src/libdpms/waylanddpmshelper.cpp

https://invent.kde.org/plasma/libkscreen/-/commit/830f166a1246b6dc77913c930bb0ffb8f5fc6341
Comment 6 Aleix Pol 2023-06-13 08:39:38 UTC
Git commit 56f0286a1adc70d56b8ce44cabe0a3ffd7ee8d9a by Aleix Pol Gonzalez, on behalf of Aleix Pol.
Committed on 13/06/2023 at 08:36.
Pushed by apol into branch 'Plasma/5.27'.

dpms: Don't crash if trying to interact with the fake screen

Qt uses at time a fake QScreen instance that isn't mirrored on Wayland.
This makes our code receive an output it does not expect.
Solve it by not attempting at setting the dpms on such outputs.


(cherry picked from commit 830f166a1246b6dc77913c930bb0ffb8f5fc6341)

M  +4    -2    src/libdpms/waylanddpmshelper.cpp

https://invent.kde.org/plasma/libkscreen/-/commit/56f0286a1adc70d56b8ce44cabe0a3ffd7ee8d9a