Jan Kundrát has uploaded a new change for review. https://gerrit.vesnicky.cesnet.cz/r/415
Change subject: Fix segfault in KWin when all screens disappear ...................................................................... Fix segfault in KWin when all screens disappear This is due to changes in Qt 5.5; they now attempt to gracefully handle a situation where all screens disappear, e.g., when user disables all outputs via xrandr. Without this patch (and with [1] and [2] in place), here's how KWin ended up: #0 xcb_send_request (c=0x0, flags=flags@entry=0, vector=vector@entry=0x7ffce7a537d0, req=req@entry=0x7f3d1c55bb60 <xcb_req>) at /var/tmp/portage/x11-libs/libxcb-1.11-r1/work/libxcb-1.11/src/xcb_out.c:187 #1 0x00007f3d1c54f29f in xcb_list_properties_unchecked (c=<optimized out>, window=<optimized out>) at xproto.c:2650 #2 0x00007f3d1a18285d in Plasma::EffectWatcher::isEffectActive (this=this@entry=0x7f3d1f1be290) at /var/tmp/portage/kde-frameworks/plasma-5.7.0/work/plasma-framework-5.7.0/src/plasma/private/effectwatcher.cpp:91 #3 0x00007f3d1a1829a9 in isEffectActive (this=0x7f3d1f1be290) at /var/tmp/portage/kde-frameworks/plasma-5.7.0/work/plasma-framework-5.7.0/src/plasma/private/effectwatcher.cpp:79 #4 Plasma::EffectWatcher::nativeEventFilter (this=0x7f3d1f1be290, eventType=..., message=0x7f3d04005160, result=<optimized out>) at /var/tmp/portage/kde-frameworks/plasma-5.7.0/work/plasma-framework-5.7.0/src/plasma/private/effectwatcher.cpp:76 #5 0x00007f3d1ca3aa8a in QAbstractEventDispatcher::filterNativeEvent (this=<optimized out>, eventType=..., message=message@entry=0x7f3d04005160, result=result@entry=0x7ffce7a538e8) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qabstracteventdispatcher.cpp:460 #6 0x00007f3d0c6d6951 in QXcbConnection::handleXcbEvent (this=this@entry=0x7f3d1f13c5a0, event=event@entry=0x7f3d04005160) at /var/tmp/portage/dev-qt/qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbconnection.cpp:971 #7 0x00007f3d0c6d89b3 in QXcbConnection::processXcbEvents (this=0x7f3d1f13c5a0) at /var/tmp/portage/dev-qt/qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbconnection.cpp:1376 #8 0x00007f3d1ca77c86 in QObject::event (this=0x7f3d1f13c5a0, e=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qobject.cpp:1246 #9 0x00007f3d1d391ddc in QApplicationPrivate::notify_helper (this=this@entry=0x7f3d1f135000, receiver=receiver@entry=0x7f3d1f13c5a0, e=e@entry=0x7f3d040051d0) at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:3716 #10 0x00007f3d1d3977ba in QApplication::notify (this=0x7ffce7a540b0, receiver=0x7f3d1f13c5a0, e=0x7f3d040051d0) at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:3499 #11 0x00007f3d1ca3e9cd in QCoreApplication::notifyInternal (this=0x7ffce7a540b0, receiver=0x7f3d1f13c5a0, event=event@entry=0x7f3d040051d0) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:963 #12 0x00007f3d1ca4142b in sendEvent (event=0x7f3d040051d0, receiver=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.h:228 #13 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x7f3d1f126340) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:1580 #14 0x00007f3d1caa343a in QEventDispatcherUNIX::processEvents (this=0x7f3d1f15ea90, flags=flags@entry=...) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventdispatcher_unix.cpp:579 #15 0x00007f3d0c7160a0 in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...) at /var/tmp/portage/dev-qt/qtgui-5.5.9999/work/qtgui-5.5.9999/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp:62 #16 0x00007f3d1ca3be4b in QEventLoop::exec (this=this@entry=0x7ffce7a53fa0, flags=..., flags@entry=...) at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qeventloop.cpp:204 #17 0x00007f3d1ca4521e in QCoreApplication::exec () at /var/tmp/portage/dev-qt/qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qcoreapplication.cpp:1216 #18 0x00007f3d1cd90a0a in QGuiApplication::exec () at /var/tmp/portage/dev-qt/qtgui-5.5.9999/work/qtgui-5.5.9999/src/gui/kernel/qguiapplication.cpp:1522 #19 0x00007f3d1d38db8b in QApplication::exec () at /var/tmp/portage/dev-qt/qtwidgets-5.5.9999/work/qtwidgets-5.5.9999/src/widgets/kernel/qapplication.cpp:2976 #20 0x00007f3d1e5c4bcf in kdemain (argc=2, argv=0x7ffce7a54208) at /var/tmp/portage/kde-plasma/kwin-5.2.9999/work/kwin-5.2.9999/main_x11.cpp:294 #21 0x00007f3d1e23f9f5 in __libc_start_main (main=0x7f3d1e9eb9a0 <main(int, char**)>, argc=2, argv=0x7ffce7a54208, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffce7a541f8) at libc-start.c:292 #22 0x00007f3d1e9eba09 in _start () [1] https://codereview.qt-project.org/108329/ [2] https://git.reviewboard.kde.org/r/122908/ Change-Id: Id7fcb1c2138d604b2e6291dda4db9855548de2ec --- M src/plasma/private/effectwatcher.cpp 1 file changed, 3 insertions(+), 0 deletions(-) git pull ssh://gerrit.vesnicky.cesnet.cz:29418/plasma-framework refs/changes/15/415/1 diff --git a/src/plasma/private/effectwatcher.cpp b/src/plasma/private/effectwatcher.cpp index 25b48e2..179e626 100644 --- a/src/plasma/private/effectwatcher.cpp +++ b/src/plasma/private/effectwatcher.cpp @@ -88,6 +88,9 @@ return false; } xcb_connection_t *c = QX11Info::connection(); + if (!c) { + return false; + } xcb_list_properties_cookie_t propsCookie = xcb_list_properties_unchecked(c, QX11Info::appRootWindow()); QScopedPointer<xcb_list_properties_reply_t, QScopedPointerPodDeleter> props(xcb_list_properties_reply(c, propsCookie, nullptr)); if (props.isNull()) { -- To view, visit https://gerrit.vesnicky.cesnet.cz/r/415 To unsubscribe, visit https://gerrit.vesnicky.cesnet.cz/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id7fcb1c2138d604b2e6291dda4db9855548de2ec Gerrit-PatchSet: 1 Gerrit-Project: plasma-framework Gerrit-Branch: master Gerrit-Owner: Jan Kundrát <j...@kde.org> _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel