https://bugs.kde.org/show_bug.cgi?id=438789

            Bug ID: 438789
           Summary: kwin_wayland crashed in KWin::DrmGpu::updateOutputs
                    while un/re-plugging monitor
           Product: kwin
           Version: 5.22.0
          Platform: openSUSE RPMs
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: platform-drm
          Assignee: kwin-bugs-n...@kde.org
          Reporter: jirisl...@gmail.com
  Target Milestone: ---

SUMMARY
When I unplugged and replugged an external monitor the following crash
occurred. I don't know if the unplug or replug caused this as I did it both in
one second or so.

> #0  qDeleteAll<KWin::DrmConnector* const*>(KWin::DrmConnector* const*, 
> KWin::DrmConnector* const*) (end=0x558831b810d0, begin=0x558831b810c8) at 
> /usr/include/qt5/QtCore/qalgorithms.h:320
> #1  qDeleteAll<QVector<KWin::DrmConnector*> >(QVector<KWin::DrmConnector*> 
> const&) (c=<optimized out>, c=...) at 
> /usr/include/qt5/QtCore/qalgorithms.h:328
> #2  KWin::DrmGpu::updateOutputs() [clone .isra.0] (this=<optimized out>) at 
> /usr/src/debug/kwin5-5.22.0-2.1.x86_64/src/plugins/platforms/drm/drm_gpu.cpp:308
> #3  0x00007f3f56df8c2e in KWin::DrmBackend::updateOutputs() 
> (this=0x5588308190a0) at 
> /usr/src/debug/kwin5-5.22.0-2.1.x86_64/src/plugins/platforms/drm/drm_backend.cpp:328
> #4  KWin::DrmBackend::updateOutputs() (this=this@entry=0x5588308190a0) at 
> /usr/src/debug/kwin5-5.22.0-2.1.x86_64/src/plugins/platforms/drm/drm_backend.cpp:320
> #5  0x00007f3f56df9a1b in KWin::DrmBackend::handleUdevEvent() 
> (this=0x5588308190a0) at 
> /usr/src/debug/kwin5-5.22.0-2.1.x86_64/src/plugins/platforms/drm/drm_backend.cpp:230
> #6  0x00007f3f5d3f40f3 in QtPrivate::QSlotObjectBase::call(QObject*, void**) 
> (a=0x7fff5456c7b0, r=0x5588308190a0, this=0x55883083ca90) at 
> ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
> #7  doActivate<false>(QObject*, int, void**) (sender=0x558830839290, 
> signal_index=3, argv=0x7fff5456c7b0) at kernel/qobject.cpp:3886
> #8  0x00007f3f5d3ed5bf in QMetaObject::activate(QObject*, QMetaObject const*, 
> int, void**) (sender=sender@entry=0x558830839290, m=m@entry=0x7f3f5d6a0aa0, 
> local_signal_index=local_signal_index@entry=0, 
> argv=argv@entry=0x7fff5456c7b0) at kernel/qobject.cpp:3946
> #9  0x00007f3f5d3f74bf in QSocketNotifier::activated(QSocketDescriptor, 
> QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) 
> (this=this@entry=0x558830839290, _t1=..., _t2=<optimized out>, _t3=...) at 
> .moc/moc_qsocketnotifier.cpp:178
> #10 0x00007f3f5d3f7cbb in QSocketNotifier::event(QEvent*) 
> (this=0x558830839290, e=0x7fff5456c8d0) at kernel/qsocketnotifier.cpp:302
> #11 0x00007f3f5e2cda5f in QApplicationPrivate::notify_helper(QObject*, 
> QEvent*) (this=<optimized out>, receiver=0x558830839290, e=0x7fff5456c8d0) at 
> kernel/qapplication.cpp:3632
> #12 0x00007f3f5d3bdaaa in QCoreApplication::notifyInternal2(QObject*, 
> QEvent*) (receiver=0x558830839290, event=0x7fff5456c8d0) at 
> kernel/qcoreapplication.cpp:1063
> #13 0x00007f3f5d4124ab in 
> QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=0x5588307c3a10) 
> at kernel/qeventdispatcher_unix.cpp:304
> #14 0x00007f3f5d41290b in 
> QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 
> (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:511
> #15 0x000055882f39339d in 
> QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 
> (this=<optimized out>, flags=...) at qunixeventdispatcher.cpp:63
> #16 0x00007f3f5d3bc4bb in 
> QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) 
> (this=this@entry=0x7fff5456ca60, flags=..., flags@entry=...) at 
> ../../include/QtCore/../../src/corelib/global/qflags.h:69
> #17 0x00007f3f5d3c4790 in QCoreApplication::exec() () at 
> ../../include/QtCore/../../src/corelib/global/qflags.h:121
> #18 0x000055882f33626a in main(int, char**) (argc=<optimized out>, 
> argv=<optimized out>) at 
> /usr/src/debug/kwin5-5.22.0-2.1.x86_64/src/main_wayland.cpp:727

> (gdb) fram 2
> #2  KWin::DrmGpu::updateOutputs() [clone .isra.0] (this=<optimized out>) at 
> /usr/src/debug/kwin5-5.22.0-2.1.x86_64/src/plugins/platforms/drm/drm_gpu.cpp:308
> 308         qDeleteAll(oldConnectors);
> (gdb) l
> 303
> 304         for(DrmOutput *removedOutput : removedOutputs) {
> 305             removeOutput(removedOutput);
> 306         }
> 307
> 308         qDeleteAll(oldConnectors);
> 309         qDeleteAll(oldCrtcs);
> 310         return true;
> 311     }
> 312



STEPS TO REPRODUCE
1. Unplug thunderbolt (behind which a monitor is connected)
2. Replug thunderbolt
3. boom


SOFTWARE/OS VERSIONS
Operating System: openSUSE Tumbleweed 20210614
KDE Plasma Version: 5.22.0
KDE Frameworks Version: 5.82.0
Qt Version: 5.15.2
Kernel Version: 5.12.10-3.g332b26c-default (64-bit)
Graphics Platform: Wayland
Processors: 4 × Intel® Core™ i7-6600U CPU @ 2.60GHz
Memory: 15.1 GiB of RAM
Graphics Processor: Mesa DRI Intel® HD Graphics 520

ADDITIONAL INFORMATION
Running in wayland.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to