Bug 467234

Summary: kwin_wayland SIGSEGV in KWaylandServer::OutputInterface::handle()
Product: [Plasma] kwin Reporter: kdebugs <kdebugs>
Component: wayland-genericAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED DUPLICATE    
Severity: crash CC: nate, tamius.han, wolfendeathx
Priority: NOR    
Version: 5.27.2   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: system journal
decoded backtrace
drkonqi
link to core file

Description kdebugs@hirebzs.mozmail.com 2023-03-12 09:51:10 UTC
Created attachment 157202 [details]
system journal

SUMMARY

System is a laptop with an external monitor attached on HDMI port; I was not at the computer when the crash happened, and certainly wasn't interacting with it. When I came back to it I found that kwin_wayland had crashed and restarted, so I'm afraid I can't provide exact events leading up to the crash, perhaps it has to do with screenlocking. But I've attached core dump, back trace & libs info as found by drkonqi and system journal around the crash.

STEPS TO REPRODUCE
unsure

OBSERVED RESULT
kwin_wayland crashed

EXPECTED RESULT
kwin_wayland should not crash


SOFTWARE/OS VERSIONS
Operating System: Fedora Linux 37
KDE Plasma Version: 5.27.2
KDE Frameworks Version: 5.103.0
Qt Version: 5.15.8
Kernel Version: 6.1.14-200.fc37.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 PRO 6850U with Radeon Graphics
Memory: 14.4 GiB of RAM
Graphics Processor: AMD Radeon Graphics 680M
Comment 1 kdebugs@hirebzs.mozmail.com 2023-03-12 09:51:50 UTC
Created attachment 157203 [details]
decoded backtrace
Comment 2 kdebugs@hirebzs.mozmail.com 2023-03-12 09:52:11 UTC
Created attachment 157204 [details]
drkonqi
Comment 3 kdebugs@hirebzs.mozmail.com 2023-03-12 10:00:28 UTC
Created attachment 157207 [details]
link to core file
Comment 4 Nate Graham 2023-03-13 21:30:42 UTC
Pasting backtrace inline for searchability: 

#0  std::__uniq_ptr_impl<KWaylandServer::OutputInterfacePrivate, std::default_delete<KWaylandServer::OutputInterfacePrivate> >::_M_ptr (this=0x10) at /usr/include/c++/12/bits/unique_ptr.h:191
191	     pointer    _M_ptr() const noexcept { return std::get<0>(_M_t); }
[Current thread is 1 (Thread 0x7fb7849c2980 (LWP 2168))]
(gdb) bt full
#0  std::__uniq_ptr_impl<KWaylandServer::OutputInterfacePrivate, std::default_delete<KWaylandServer::OutputInterfacePrivate> >::_M_ptr() const (this=0x10)
    at /usr/include/c++/12/bits/unique_ptr.h:191
#1  std::unique_ptr<KWaylandServer::OutputInterfacePrivate, std::default_delete<KWaylandServer::OutputInterfacePrivate> >::get() const (this=0x10) at /usr/include/c++/12/bits/unique_ptr.h:462
#2  std::unique_ptr<KWaylandServer::OutputInterfacePrivate, std::default_delete<KWaylandServer::OutputInterfacePrivate> >::operator->() const (this=0x10)
    at /usr/include/c++/12/bits/unique_ptr.h:455
#3  KWaylandServer::OutputInterface::handle() const (this=0x0) at /usr/src/debug/kwin-5.27.2-1.fc37.x86_64/src/wayland/output_interface.cpp:263
#4  0x00007fb78b9f14af in KWaylandServer::DpmsInterface::sendMode() (this=0x7fb77000b550) at /usr/src/debug/kwin-5.27.2-1.fc37.x86_64/src/wayland/dpms_interface.cpp:141
        mode = <optimized out>
        wlMode = <optimized out>
#5  0x00007fb78b9f183a in operator() (__closure=0x55966c53a920) at /usr/src/debug/kwin-5.27.2-1.fc37.x86_64/src/wayland/dpms_interface.cpp:92
        this = 0x7fb77000b550
#6  QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWaylandServer::DpmsInterface::DpmsInterface(KWaylandServer::OutputInterface*, wl_resource*)::<lambda()> >::call
    (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
#7  QtPrivate::Functor<KWaylandServer::DpmsInterface::DpmsInterface(KWaylandServer::OutputInterface*, wl_resource*)::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256
#8  QtPrivate::QFunctorSlotObject<KWaylandServer::DpmsInterface::DpmsInterface(KWaylandServer::OutputInterface*, wl_resource*)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x55966c53a910, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443
#9  0x00007fb789ed0e96 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffcad5720d0, r=<optimized out>, this=0x55966c53a910)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
        receiver = <optimized out>
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x7fb77000b550, sender = 0x55966b864520, signal = 14}
        c = 0x7fb770018060
        connections = {d = 0x55966b87a800}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 340
        signalVector = 0x55966b9354b0
        currentThreadId = 0x7fb7849c2980
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#10 doActivate<false>(QObject*, int, void**) (sender=0x55966b864520, signal_index=14, argv=0x7ffcad5720d0) at kernel/qobject.cpp:3923
        receiver = <optimized out>
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x7fb77000b550, sender = 0x55966b864520, signal = 14}
        c = 0x7fb770018060
        connections = {d = 0x55966b87a800}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 340
        signalVector = 0x55966b9354b0
        currentThreadId = 0x7fb7849c2980
        sp = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#11 0x00007fb78b7f93d1 in KWin::Output::setState(KWin::Output::State const&) (this=0x55966b864520, state=...) at /usr/src/debug/kwin-5.27.2-1.fc37.x86_64/src/core/output.cpp:292
        oldState = {position = {xp = 0, yp = 0}, scale = 1, transform = KWin::Output::Transform::Normal, modes = {<QListSpecialMethods<std::shared_ptr<KWin::OutputMode> >> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x55966b87a830}, d = 0x55966b87a830}}, currentMode = std::shared_ptr<KWin::OutputMode> (use count 9, weak count 23) = {get() = 0x55966b871430}, dpmsMode = KWin::Output::DpmsMode::On, subPixel = KWin::Output::SubPixel::Unknown, enabled = true, overscan = 0, rgbRange = KWin::Output::RgbRange::Automatic}
#12 0x00007fb78b9a9ba9 in KWin::DrmOutput::updateDpmsMode(KWin::Output::DpmsMode) (this=this@entry=0x55966b864520, dpmsMode=dpmsMode@entry=KWin::Output::DpmsMode::Off)
    at /usr/src/debug/kwin-5.27.2-1.fc37.x86_64/src/backends/drm/drm_output.cpp:353
        next = {position = {xp = 0, yp = 0}, scale = 1, transform = KWin::Output::Transform::Normal, modes = {<QListSpecialMethods<std::shared_ptr<KWin::OutputMode> >> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = std::atomic<int> = { -1 }}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x55966b87a830}, d = 0x55966b87a830}}, currentMode = std::shared_ptr<KWin::OutputMode> (use count 9, weak count 23) = {get() = 0x55966b871430}, dpmsMode = KWin::Output::DpmsMode::Off, subPixel = KWin::Output::SubPixel::Unknown, enabled = true, overscan = 0, rgbRange = KWin::Output::RgbRange::Automatic}
#13 0x00007fb78b9aac1d in KWin::DrmOutput::setDrmDpmsMode(KWin::Output::DpmsMode) (this=0x55966b864520, mode=KWin::Output::DpmsMode::Off)
    at /usr/src/debug/kwin-5.27.2-1.fc37.x86_64/src/backends/drm/drm_output.cpp:276
        active = false
        isActive = true
#14 0x00007fb789ed0e96 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffcad5723a0, r=<optimized out>, this=0x55966b8789c0)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
        receiver = <optimized out>
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x55966b864520, sender = 0x55966b864618, signal = 3}
        c = 0x55966b870350
        connections = {d = 0x55966b87a590}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 1
        signalVector = 0x55966b870bc0
        currentThreadId = 0x7fb7849c2980
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#15 doActivate<false>(QObject*, int, void**) (sender=0x55966b864618, signal_index=3, argv=0x7ffcad5723a0) at kernel/qobject.cpp:3923
        receiver = <optimized out>
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x55966b864520, sender = 0x55966b864618, signal = 3}
        c = 0x55966b870350
        connections = {d = 0x55966b87a590}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 1
        signalVector = 0x55966b870bc0
        currentThreadId = 0x7fb7849c2980
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#16 0x00007fb789ecbe27 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=<optimized out>, m=m@entry=0x7fb78a15e580 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffcad5723a0) at kernel/qobject.cpp:3983
#17 0x00007fb789ed421e in QTimer::timeout(QTimer::QPrivateSignal) (this=<optimized out>, _t1=...) at .moc/moc_qtimer.cpp:205
        _a = {0x0, 0x7ffcad57239f}
#18 0x00007fb789ec7fc5 in QObject::event(QEvent*) (this=0x55966b864618, e=0x7ffcad572500) at kernel/qobject.cpp:1369
#19 0x00007fb7893aed62 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x55966b864618, e=0x7ffcad572500) at kernel/qapplication.cpp:3640
        consumed = false
        filtered = false
#20 0x00007fb789e9d4e8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55966b864618, event=0x7ffcad572500) at kernel/qcoreapplication.cpp:1064
        selfRequired = true
        result = false
        cbdata = {0x55966b864618, 0x7ffcad572500, 0x7ffcad57248f}
        d = <optimized out>
        threadData = 0x55966b4aa6a0
        scopeLevelCounter = {threadData = 0x55966b4aa6a0}
#21 0x00007fb789e9d6d2 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1462
#22 0x00007fb789eed981 in QTimerInfoList::activateTimers() (this=this@entry=0x55966b4af498) at kernel/qtimerinfo_unix.cpp:643
Comment 5 David Edmundson 2023-03-14 12:52:47 UTC
*** Bug 467307 has been marked as a duplicate of this bug. ***
Comment 6 David Edmundson 2023-03-14 12:53:08 UTC
*** Bug 467298 has been marked as a duplicate of this bug. ***
Comment 7 Antonio Rojas 2023-03-17 18:59:29 UTC

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