https://bugs.kde.org/show_bug.cgi?id=420776
Bug ID: 420776 Summary: Crash when disconnecting external displays from the laptop Product: kwin Version: unspecified Platform: Other OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: wayland-generic Assignee: kwin-bugs-n...@kde.org Reporter: aleix...@kde.org Target Milestone: --- (gdb) p area $1 = (const QRect &) @0x7ffe2713f8b0: {x1 = 0, y1 = 0, x2 = -1, y2 = -1} Seems like XdgShellClient::finishInit (Frame #8) is trying to place windows into an invalid area. I don't know how to reproduce, but Workspace::clientArea should probably never return an invalid area. This happens because it's accessing a screen that doesn't exist anymore though: (gdb) p Screens::s_self->m_current $2 = 2 Maybe we could update the current screen earlier? #0 0x00007fbc91b26ce5 in raise () at /usr/lib/libc.so.6 #1 0x00007fbc91b1092c in abort () at /usr/lib/libc.so.6 #2 0x00007fbc921e5bd1 in qt_message_fatal (context=..., message=<synthetic pointer>...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/global/qlogging.cpp:1914 #3 QMessageLogger::fatal(char const*, ...) const (this=this@entry=0x7ffe2713f720, msg=msg@entry=0x7fbc924ddea0 "ASSERT: \"%s\" in file %s, line %d") at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/global/qlogging.cpp:893 #4 0x00007fbc921e4fc5 in qt_assert(char const*, char const*, int) (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/global/qlogging.h:90 #5 0x00007fbc95e37008 in KWin::Placement::placeOnScreenDisplay(KWin::AbstractClient*, QRect const&) (this=0x561c04b535b0, c=0x561c04b15880, area=...) at /home/apol/devel/frameworks/kwin/placement.cpp:502 #6 0x00007fbc95e35681 in KWin::Placement::place(KWin::AbstractClient*, QRect const&) (this=0x561c04b535b0, c=0x561c04b15880, area=...) at /home/apol/devel/frameworks/kwin/placement.cpp:72 #7 0x00007fbc95d01888 in KWin::AbstractClient::placeIn(QRect const&) (this=0x561c04b15880, area=...) at /home/apol/devel/frameworks/kwin/abstract_client.cpp:259 #8 0x00007fbc95f60f3d in KWin::XdgShellClient::finishInit() (this=0x561c04b15880) at /home/apol/devel/frameworks/kwin/xdgshellclient.cpp:236 #9 0x00007fbc95f70ddf in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::XdgShellClient::*)()>::call(void (KWin::XdgShellClient::*)(), KWin::XdgShellClient*, void**) (f=(void (KWin::XdgShellClient::*)(KWin::XdgShellClient * const)) 0x7fbc95f6082e <KWin::XdgShellClient::finishInit()>, o=0x561c04b15880, arg=0x7ffe2713fa60) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:152 #10 0x00007fbc95f703e7 in QtPrivate::FunctionPointer<void (KWin::XdgShellClient::*)()>::call<QtPrivate::List<>, void>(void (KWin::XdgShellClient::*)(), KWin::XdgShellClient*, void**) (f=(void (KWin::XdgShellClient::*)(KWin::XdgShellClient * const)) 0x7fbc95f6082e <KWin::XdgShellClient::finishInit()>, o=0x561c04b15880, arg=0x7ffe2713fa60) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:185 #11 0x00007fbc95f6f017 in QtPrivate::QSlotObject<void (KWin::XdgShellClient::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x561c05038f20, r=0x561c04b15880, a=0x7ffe2713fa60, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:418 #12 0x00007fbc9243034e in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffe2713fa60, r=0x561c04b15880, this=0x561c05038f20) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398 #13 doActivate<false>(QObject*, int, void**) (sender=0x561c05a2d470, signal_index=21, argv=0x7ffe2713fa60) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886 #14 0x00007fbc93881288 in KWaylandServer::SurfaceInterface::committed() (this=0x561c05a2d470) at src/server/KWaylandServer_autogen/EWIEGA46WW/moc_surface_interface.cpp:503 #15 0x00007fbc939332ca in KWaylandServer::SurfaceInterface::Private::commit() (this=0x561c050c7d90) at /home/apol/devel/frameworks/kwayland-server/src/server/surface_interface.cpp:523 #16 0x00007fbc93931cc1 in KWaylandServer::SurfaceInterface::Private::commitCallback(wl_client*, wl_resource*) (client=0x561c04eef300, resource=0x561c04f3dc00) at /home/apol/devel/frameworks/kwayland-server/src/server/surface_interface.cpp:671 #17 0x00007fbc8e26da8d in () at /usr/lib/libffi.so.7 #18 0x00007fbc8e26d01b in () at /usr/lib/libffi.so.7 #19 0x00007fbc90e72f62 in () at /usr/lib/libwayland-server.so.0 #20 0x00007fbc90e6f2dc in () at /usr/lib/libwayland-server.so.0 #21 0x00007fbc90e70faa in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0 #22 0x00007fbc938a043e in KWaylandServer::Display::Private::dispatch() (this=0x561c03e49930) at /home/apol/devel/frameworks/kwayland-server/src/server/display.cpp:134 #23 0x00007fbc938a6a18 in KWaylandServer::Display::Private::installSocketNotifier()::$_0::operator()() const (this=0x561c03e64de0) at /home/apol/devel/frameworks/kwayland-server/src/server/display.cpp:102 #24 0x00007fbc938a69c6 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWaylandServer::Display::Private::installSocketNotifier()::$_0>::call(KWaylandServer::Display::Private::installSocketNotifier()::$_0&, void**) (f=..., arg=0x7ffe271402f0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:146 #25 0x00007fbc938a6991 in QtPrivate::Functor<KWaylandServer::Display::Private::installSocketNotifier()::$_0, 0>::call<QtPrivate::List<>, void>(KWaylandServer::Display::Private::installSocketNotifier()::$_0&, void*, void**) (f=..., arg=0x7ffe271402f0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:256 #26 0x00007fbc938a693c in QtPrivate::QFunctorSlotObject<KWaylandServer::Display::Private::installSocketNotifier()::$_0, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x561c03e64dd0, r=0x561c03e61e40, a=0x7ffe271402f0, ret=0x0) at /home/apol/devel/kde5/include/QtCore/qobjectdefs_impl.h:443 #27 0x00007fbc9243034e in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffe271402f0, r=0x561c03e61e40, this=0x561c03e64dd0) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398 #28 doActivate<false>(QObject*, int, void**) (sender=0x561c03e64db0, signal_index=3, argv=0x7ffe271402f0) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3886 #29 0x00007fbc9242992f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x561c03e64db0, m=m@entry=0x7fbc926c8b40 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe271402f0) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qobject.cpp:3946 #30 0x00007fbc9243427f in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x561c03e64db0, _t1=..., _t2=<optimized out>, _t3=...) at .moc/moc_qsocketnotifier.cpp:178 #31 0x00007fbc924349eb in QSocketNotifier::event(QEvent*) (this=0x561c03e64db0, e=0x7ffe271405c0) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qsocketnotifier.cpp:302 #32 0x00007fbc92f05cdf in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x561c03e09d40, receiver=receiver@entry=0x561c03e64db0, e=e@entry=0x7ffe271405c0) at /home/apol/devel/frameworks/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3671 #33 0x00007fbc92f0eb60 in QApplication::notify(QObject*, QEvent*) (this=0x7ffe27140910, receiver=0x561c03e64db0, e=0x7ffe271405c0) at /home/apol/devel/frameworks/qt5/qtbase/src/widgets/kernel/qapplication.cpp:3417 #34 0x00007fbc923fa34a in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x561c03e64db0, event=0x7ffe271405c0) at ../../include/QtCore/5.15.0/QtCore/private/../../../../../../../../devel/frameworks/qt5/qtbase/src/corelib/thread/qthread_p.h:325 #35 0x00007fbc9245041b in QEventDispatcherUNIXPrivate::activateSocketNotifiers() (this=0x561c03e18e80) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:304 #36 0x00007fbc9245086b in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /home/apol/devel/frameworks/qt5/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:511 #37 0x00007fbc8d3398cd in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...) at /home/apol/devel/frameworks/qt5/qtbase/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp:63 #38 0x00007fbc923f8f3b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffe27140750, flags=..., flags@entry=...) at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/global/qflags.h:141 #39 0x00007fbc92400e50 in QCoreApplication::exec() () at ../../include/QtCore/../../../../../devel/frameworks/qt5/qtbase/src/corelib/global/qflags.h:121 #40 0x0000561c03283371 in main(int, char**) (argc=4, argv=0x7ffe27140b78) at /home/apol/devel/frameworks/kwin/main_wayland.cpp:704 -- You are receiving this mail because: You are watching all bug changes.