Bug 429421 - plasma desktop crashes after turning displayport monitor off also drkonqi crashes
Summary: plasma desktop crashes after turning displayport monitor off also drkonqi cra...
Status: RESOLVED UPSTREAM
Alias: None
Product: kwin
Classification: Plasma
Component: general (other bugs)
Version First Reported In: 5.20.3
Platform: Gentoo Packages Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-11-20 23:28 UTC by Igor Kovalenko
Modified: 2021-01-13 19:19 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Igor Kovalenko 2020-11-20 23:28:08 UTC
SUMMARY
Just swapped in AMD RX550 card and connected monitor with displayport cable. Plasma wayland desktop started crashing when I turn off display. Looks like drkonqi crashed as well.

STEPS TO REPRODUCE
1. run plasma wayland desktop as usual
2. press display power button to turn it off

OBSERVED RESULT
kwin_wayland crashes and also drkonqi crashes
when I turn monitor back on, I find plasma wayland session terminated

EXPECTED RESULT
when I turn monitor back on plasma wayland desktop should continue to operate normally, drkonqi should not crash

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 
(available in About System)
Operating System: Gentoo Linux
KDE Plasma Version: 5.20.3
KDE Frameworks Version: 5.76.0
Qt Version: 5.15.1

ADDITIONAL INFORMATION

Application: Обработчик ошибок KDE (drkonqi), signal: Aborted
Content of s_kcrashErrorMessage: (null)
[KCrash Handler]
#6  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#7  0x00007f731bb82547 in __GI_abort () at abort.c:79
#8  0x00007f731c03fc47 in qt_message_fatal (context=..., message=<synthetic pointer>...) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/global/qlogging.cpp:1914
#9  QMessageLogger::fatal (this=this@entry=0x7ffd35443e70, msg=msg@entry=0x7f7317e38098 "The Wayland connection broke. Did the Wayland compositor die?") at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/global/qlogging.cpp:893
#10 0x00007f7317d82c87 in QtWaylandClient::QWaylandDisplay::checkError (this=<optimized out>) at /var/tmp/portage/dev-qt/qtwayland-5.15.1/work/qtwayland-everywhere-src-5.15.1/src/client/qwaylanddisplay.cpp:209
#11 QtWaylandClient::QWaylandDisplay::checkError (this=<optimized out>) at /var/tmp/portage/dev-qt/qtwayland-5.15.1/work/qtwayland-everywhere-src-5.15.1/src/client/qwaylanddisplay.cpp:204
#12 0x00007f7317d936c6 in QtWaylandClient::QWaylandDisplay::flushRequests (this=0x5571ad9c4070) at /var/tmp/portage/dev-qt/qtwayland-5.15.1/work/qtwayland-everywhere-src-5.15.1/src/client/qwaylanddisplay.cpp:222
#13 0x00007f7317da3b5f in QtWaylandClient::QWaylandWindow::setVisible (visible=true, this=0x5571adae6bf0) at /var/tmp/portage/dev-qt/qtwayland-5.15.1/work/qtwayland-everywhere-src-5.15.1/src/client/qwaylandwindow.cpp:426
#14 QtWaylandClient::QWaylandWindow::setVisible (this=0x5571adae6bf0, visible=<optimized out>) at /var/tmp/portage/dev-qt/qtwayland-5.15.1/work/qtwayland-everywhere-src-5.15.1/src/client/qwaylandwindow.cpp:415
#15 0x00007f731c6471c3 in QWindowPrivate::setVisible (this=0x5571adaee040, visible=visible@entry=true) at /var/tmp/portage/dev-qt/qtgui-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/gui/kernel/qwindow.cpp:408
#16 0x00007f731ce09c0d in QWidgetWindow::setNativeWindowVisibility (this=this@entry=0x5571adaedf50, visible=visible@entry=true) at /var/tmp/portage/dev-qt/qtwidgets-5.15.1/work/qtbase-everywhere-src-5.15.1/src/widgets/kernel/qwidgetwindow.cpp:215
#17 0x00007f731cde2516 in QWidgetPrivate::show_sys (this=this@entry=0x5571ada94410) at /var/tmp/portage/dev-qt/qtwidgets-5.15.1/work/qtbase-everywhere-src-5.15.1/src/widgets/kernel/qwidget.cpp:7892
#18 0x00007f731cdebf1b in QWidgetPrivate::show_helper (this=this@entry=0x5571ada94410) at /var/tmp/portage/dev-qt/qtwidgets-5.15.1/work/qtbase-everywhere-src-5.15.1/src/widgets/kernel/qwidget.cpp:7815
#19 0x00007f731cdef073 in QWidgetPrivate::setVisible (this=0x5571ada94410, visible=<optimized out>) at /var/tmp/portage/dev-qt/qtwidgets-5.15.1/work/qtbase-everywhere-src-5.15.1/src/widgets/kernel/qwidget.cpp:8111
#20 0x00007f731cdef332 in QWidget::setVisible (this=this@entry=0x5571ada93000, visible=visible@entry=true) at /var/tmp/portage/dev-qt/qtwidgets-5.15.1/work/qtbase-everywhere-src-5.15.1/src/widgets/kernel/qwidget.cpp:8043
#21 0x00007f731cfbf3d4 in QDialog::setVisible (this=0x5571ada93000, visible=<optimized out>) at /var/tmp/portage/dev-qt/qtwidgets-5.15.1/work/qtbase-everywhere-src-5.15.1/src/widgets/dialogs/qdialog.cpp:787
#22 0x00005571ad14e3ad in (anonymous namespace)::openDrKonqiDialog () at /var/tmp/portage/kde-plasma/drkonqi-5.20.3/work/drkonqi-5.20.3/src/main.cpp:70
#23 0x00005571ad14d8e7 in main (argc=<optimized out>, argv=<optimized out>) at /var/tmp/portage/kde-plasma/drkonqi-5.20.3/work/drkonqi-5.20.3/src/main.cpp:237
[Inferior 1 (process 4852) detached]
Comment 1 Igor Kovalenko 2020-11-21 13:10:50 UTC
here is kwin_wayland crash from same happening after turning off displayport connected monitor

Thread 1 (Thread 0x7f2a4b8ed140 (LWP 9081)):
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007f2a50f2a60b in __GI_abort () at abort.c:100
#2  0x00007f2a50f2a42f in __assert_fail_base (fmt=0x7f2a4a4c2a30 "%s%s%s:%u: %s%sПроверочное утверждение «%s» не выполнено.\n%n", assertion=0x7f2a50811778 "0 && \"Couldn't find current GLX or EGL context.\\n\"", file=0x7f2a50811750 "../libepoxy-1.5.4/src/dispatch_common.c", line=<optimized out>, function=<optimized out>) at assert.c:92
#3  0x00007f2a50f39b02 in __GI___assert_fail (assertion=assertion@entry=0x7f2a50811778 "0 && \"Couldn't find current GLX or EGL context.\\n\"", file=file@entry=0x7f2a50811750 "../libepoxy-1.5.4/src/dispatch_common.c", line=line@entry=863, function=function@entry=0x7f2a508117b0 <__PRETTY_FUNCTION__.38469> "epoxy_get_proc_address") at assert.c:101
#4  0x00007f2a507efb87 in epoxy_get_proc_address (name=0x7f2a508004d9 <entrypoint_strings+9849> "glDeleteProgram") at ../libepoxy-1.5.4/src/dispatch_common.c:863
#5  epoxy_get_proc_address (name=0x7f2a508004d9 <entrypoint_strings+9849> "glDeleteProgram") at ../libepoxy-1.5.4/src/dispatch_common.c:839
#6  0x00007f2a507c4482 in epoxy_glDeleteProgram_resolver () at src/gl_generated_dispatch.c:81668
#7  epoxy_glDeleteProgram_global_rewrite_ptr (program=19) at src/gl_generated_dispatch.c:49458
#8  0x00007f2a50ebbc9a in KWin::ContrastShader::reset (this=this@entry=0x564a75930670) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects/backgroundcontrast/contrastshader.cpp:40
#9  0x00007f2a50ebbcf3 in KWin::ContrastShader::~ContrastShader (this=0x564a75930670, __in_chrg=<optimized out>) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects/backgroundcontrast/contrastshader.cpp:30
#10 KWin::ContrastShader::~ContrastShader (this=0x564a75930670, __in_chrg=<optimized out>) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects/backgroundcontrast/contrastshader.cpp:31
#11 0x00007f2a50eb7fa1 in KWin::ContrastEffect::~ContrastEffect (this=0x564a758fed10, __in_chrg=<optimized out>) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects/backgroundcontrast/contrast.cpp:63
#12 0x00007f2a50eb8049 in KWin::ContrastEffect::~ContrastEffect (this=0x564a758fed10, __in_chrg=<optimized out>) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects/backgroundcontrast/contrast.cpp:64
#13 0x00007f2a52c5b76b in KWin::EffectsHandlerImpl::destroyEffect (this=this@entry=0x564a75936790, effect=0x564a758fed10) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects.cpp:1433
#14 0x00007f2a52c5cb0a in KWin::EffectsHandlerImpl::unloadEffect (this=this@entry=0x564a75936790, name=...) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects.cpp:1407
#15 0x00007f2a52c5cede in KWin::EffectsHandlerImpl::reloadEffect (this=0x564a75936790, effect=<optimized out>) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects.cpp:1491
#16 0x00007f2a50eba96f in KWin::ContrastEffect::slotScreenGeometryChanged (this=0x564a758fed10) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects/backgroundcontrast/contrast.cpp:70
#17 0x00007f2a51623465 in QtPrivate::QSlotObjectBase::call (a=0x7ffd3255cce0, r=0x564a758fed10, this=0x564a759962d0) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#18 doActivate<false> (sender=0x564a75936790, signal_index=36, argv=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qobject.cpp:3886
#19 0x00007f2a5161d3a7 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7f2a52ae3580 <KWin::EffectsHandler::staticMetaObject>, local_signal_index=local_signal_index@entry=33, argv=argv@entry=0x7ffd3255cce0) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qobject.cpp:3946
#20 0x00007f2a52abea55 in KWin::EffectsHandler::screenGeometryChanged (this=<optimized out>, _t1=...) at libkwineffects/kwineffects_autogen/EWIEGA46WW/moc_kwineffects.cpp:1738
#21 0x00007f2a52c5384f in KWin::EffectsHandlerImpl::desktopResized (this=<optimized out>, size=...) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/effects.cpp:805
#22 0x00007f2a52d619a9 in KWin::Workspace::desktopResized (this=0x564a751ab370) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/workspace.cpp:1973
#23 0x00007f2a51623498 in doActivate<false> (sender=0x564a75127540, signal_index=4, argv=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qobject.cpp:3898
#24 0x00007f2a51623465 in QtPrivate::QSlotObjectBase::call (a=0x7ffd3255ceb0, r=0x564a75127540, this=0x564a75135b90) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#25 doActivate<false> (sender=0x564a7501ac40, signal_index=3, argv=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qobject.cpp:3886
#26 0x00007f2a5161d3a7 in QMetaObject::activate (sender=sender@entry=0x564a7501ac40, m=m@entry=0x7f2a52e86080 <KWin::Platform::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qobject.cpp:3946
#27 0x00007f2a52bc2330 in KWin::Platform::screensQueried (this=this@entry=0x564a7501ac40) at kwin_autogen/EWIEGA46WW/moc_platform.cpp:313
#28 0x00007f2a4a4f6120 in KWin::DrmBackend::updateOutputs (this=0x564a7501ac40) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/plugins/platforms/drm/drm_backend.cpp:520
#29 0x00007f2a4a4f730a in KWin::DrmBackend::<lambda()>::operator() (__closure=0x564a751a75c0) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/plugins/platforms/drm/drm_backend.cpp:349
#30 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::DrmBackend::openDrm()::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
#31 QtPrivate::Functor<KWin::DrmBackend::openDrm()::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256
#32 QtPrivate::QFunctorSlotObject<KWin::DrmBackend::openDrm()::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x564a751a75b0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443
#33 0x00007f2a51623465 in QtPrivate::QSlotObjectBase::call (a=0x7ffd3255d190, r=0x564a7501ac40, this=0x564a751a75b0) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#34 doActivate<false> (sender=0x564a750d24b0, signal_index=3, argv=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qobject.cpp:3886
#35 0x00007f2a5161d3a7 in QMetaObject::activate (sender=sender@entry=0x564a750d24b0, m=m@entry=0x7f2a518c81a0 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffd3255d190) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qobject.cpp:3946
#36 0x00007f2a51626c16 in QSocketNotifier::activated (this=this@entry=0x564a750d24b0, _t1=..., _t2=<optimized out>, _t3=...) at .moc/moc_qsocketnotifier.cpp:178
#37 0x00007f2a516273eb in QSocketNotifier::event (this=0x564a750d24b0, e=0x7ffd3255d450) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qsocketnotifier.cpp:302
#38 0x00007f2a5201937f in QApplicationPrivate::notify_helper (this=this@entry=0x564a74fc1ba0, receiver=receiver@entry=0x564a750d24b0, e=e@entry=0x7ffd3255d450) at /var/tmp/portage/dev-qt/qtwidgets-5.15.1/work/qtbase-everywhere-src-5.15.1/src/widgets/kernel/qapplication.cpp:3630
#39 0x00007f2a520222f8 in QApplication::notify (this=0x7ffd3255d810, receiver=0x564a750d24b0, e=0x7ffd3255d450) at /var/tmp/portage/dev-qt/qtwidgets-5.15.1/work/qtbase-everywhere-src-5.15.1/src/widgets/kernel/qapplication.cpp:3154
#40 0x00007f2a515edce7 in QCoreApplication::notifyInternal2 (receiver=0x564a750d24b0, event=0x7ffd3255d450) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qcoreapplication.cpp:1063
#41 0x00007f2a516431f8 in QEventDispatcherUNIXPrivate::activateSocketNotifiers (this=0x564a74fc65b0) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qeventdispatcher_unix.cpp:304
#42 0x00007f2a51643573 in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/corelib/kernel/qeventdispatcher_unix.cpp:511
#43 0x00007f2a4b337aad in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...) at /var/tmp/portage/dev-qt/qtgui-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp:63
#44 0x00007f2a515ec943 in QEventLoop::exec (this=this@entry=0x7ffd3255d5c0, flags=..., flags@entry=...) at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/include/QtCore/../../src/corelib/global/qflags.h:69
#45 0x00007f2a515f4db6 in QCoreApplication::exec () at /var/tmp/portage/dev-qt/qtcore-5.15.1-r1/work/qtbase-everywhere-src-5.15.1/include/QtCore/../../src/corelib/global/qflags.h:121
#46 0x0000564a7385b52d in main (argc=<optimized out>, argv=<optimized out>) at /var/tmp/portage/kde-plasma/kwin-5.20.3/work/kwin-5.20.3/main_wayland.cpp:702
Comment 2 Nate Graham 2021-01-13 18:44:53 UTC
#6  QMessageLogger::fatal (this=this@entry=0x7fffd70c5ba0, msg=msg@entry=0x7ff994ac00b8 "The Wayland connection broke. Did the Wayland compositor die?") at global/qlogging.cpp:893

This means that the compositor crashed. Due to a Qt issue, when this happens, the app using it will crash too. KDE developers submitted a fix, but sadly it was not merged. See https://codereview.qt-project.org/c/qt/qtwayland/+/308984.

Until we get better handling of this in Qt, the best we can do is debug why the compositor crashed in the first place. So can you please get a backtrace of the crash in kwin_wayland and then file a new bug report with it on kwin | wayland-generic? Thanks!

You may be able to use the `coredumpctl` utility to retrieve the backtrace. See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports#Retrieving_a_backtrace_using_coredumpctl
Comment 3 Igor Kovalenko 2021-01-13 19:19:09 UTC
If I understood discussion at kwin correctly, the root cause of kwin_wayland crash in this report is tracked here https://invent.kde.org/plasma/kwin/-/issues/23