Bug 424694

Summary: kwin_wayland crashes when enabling monitor
Product: [Plasma] kwin Reporter: Nicolas Fella <nicolas.fella>
Component: wayland-genericAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED WORKSFORME    
Severity: normal CC: kde, nate, slawek
Priority: NOR    
Version: git master   
Target Milestone: ---   
Platform: Other   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=450501
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Nicolas Fella 2020-07-26 20:01:53 UTC
SUMMARY

I have two monitors of which one is disabled. When I enable it in the KScreen KCM and apply kwin crashes.

KDE stuff from master, Qt from 5.15 branch

#0  0x00007f052aed2355 in raise () at /usr/lib/libc.so.6
#1  0x00007f052aebb853 in abort () at /usr/lib/libc.so.6
#2  0x00007f052af15878 in __libc_message () at /usr/lib/libc.so.6
#3  0x00007f052af1cd3a in  () at /usr/lib/libc.so.6
#4  0x00007f052af1df74 in _int_free () at /usr/lib/libc.so.6
#5  0x00007f052ee94ada in QtPrivate::QSlotObject<void (KWin::XdgToplevelClient::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
    (which=0, this_=0x55ecc4809aa0, r=0x0, a=0x0, ret=0x0) at /home/nico/kde/usr/include/QtCore/qobjectdefs_impl.h:415
#6  0x00007f052b7ddfb1 in QtPrivate::QSlotObjectBase::destroyIfLastRef() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395
#7  QtPrivate::QSlotObjectBase::destroyIfLastRef() (this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:394
#8  QObject::~QObject() (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qobject.cpp:1068
#9  0x00007f052edf5912 in KWin::Toplevel::~Toplevel() (this=0x55ecc4b02690, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/toplevel.cpp:68
#10 0x00007f052ec1eb28 in KWin::AbstractClient::~AbstractClient() (this=0x55ecc4b02690, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/abstract_client.cpp:110
#11 0x00007f052ee91386 in KWin::WaylandClient::~WaylandClient() (this=0x55ecc4b02690, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/waylandclient.h:25
#12 0x00007f052ee864aa in KWin::XdgSurfaceClient::~XdgSurfaceClient() (this=0x55ecc4b02690, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/xdgshellclient.cpp:118
#13 0x00007f052ee88be2 in KWin::XdgToplevelClient::~XdgToplevelClient() (this=0x55ecc4b02690, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/xdgshellclient.cpp:664
#14 0x00007f052ee88bfe in KWin::XdgToplevelClient::~XdgToplevelClient() (this=0x55ecc4b02690, __in_chrg=<optimized out>) at /home/nico/kde/src/kwin/xdgshellclient.cpp:666
#15 0x00007f052ee87f85 in KWin::XdgSurfaceClient::destroyClient() (this=0x55ecc4b02690) at /home/nico/kde/src/kwin/xdgshellclient.cpp:587
#16 0x00007f052ee963a8 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KWin::XdgSurfaceClient::*)()>::call(void (KWin::XdgSurfaceClient::*)(), KWin::XdgSurfaceClient*, void**)
    (f=&virtual table offset 880, o=0x55ecc4b02690, arg=0x7ffd1b6c5a70) at /home/nico/kde/usr/include/QtCore/qobjectdefs_impl.h:152
#17 0x00007f052ee958c3 in QtPrivate::FunctionPointer<void (KWin::XdgSurfaceClient::*)()>::call<QtPrivate::List<>, void>(void (KWin::XdgSurfaceClient::*)(), KWin::XdgSurfaceClient*, void**)
    (f=&virtual table offset 880, o=0x55ecc4b02690, arg=0x7ffd1b6c5a70) at /home/nico/kde/usr/include/QtCore/qobjectdefs_impl.h:185
#18 0x00007f052ee94781 in QtPrivate::QSlotObject<void (KWin::XdgSurfaceClient::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
    (which=1, this_=0x55ecc4809b30, r=0x55ecc4b02690, a=0x7ffd1b6c5a70, ret=0x0) at /home/nico/kde/usr/include/QtCore/qobjectdefs_impl.h:418
#19 0x00007f052b7dfef6 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffd1b6c5a70, r=0x55ecc4b02690, this=0x55ecc4809b30) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#20 doActivate<false>(QObject*, int, void**) (sender=0x55ecc4b92810, signal_index=0, argv=argv@entry=0x7ffd1b6c5a70) at kernel/qobject.cpp:3886
#21 0x00007f052b7d9250 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x55ecc4b92810, m=m@entry=0x7f052ba6f8a0 <QObject::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffd1b6c5a70) at kernel/qobject.cpp:3946
#22 0x00007f052b7d92ff in QObject::destroyed(QObject*) (this=this@entry=0x55ecc4b92810, _t1=<optimized out>, _t1@entry=0x55ecc4b92810) at .moc/moc_qobject.cpp:219
#23 0x00007f052b7de27d in QObject::~QObject() (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qobject.cpp:992
#24 0x00007f052cc70b48 in KWaylandServer::XdgToplevelInterface::~XdgToplevelInterface() (this=0x55ecc4b92810, __in_chrg=<optimized out>)
    at /home/nico/kde/src/kwayland-server/src/server/xdgshell_interface.cpp:521
#25 0x00007f052cc70b64 in KWaylandServer::XdgToplevelInterface::~XdgToplevelInterface() (this=0x55ecc4b92810, __in_chrg=<optimized out>)
    at /home/nico/kde/src/kwayland-server/src/server/xdgshell_interface.cpp:523
#26 0x00007f052cc703c6 in KWaylandServer::XdgToplevelInterfacePrivate::xdg_toplevel_destroy_resource(QtWaylandServer::xdg_toplevel::Resource*) (this=0x55ecc4a143e0, resource=0x55ecc4cd6070)
    at /home/nico/kde/src/kwayland-server/src/server/xdgshell_interface.cpp:355
#27 0x00007f052cca93a0 in QtWaylandServer::xdg_toplevel::destroy_func(wl_resource*) (client_resource=0x55ecc4c7a490) at src/server/qwayland-server-xdg-shell.cpp:940
#28 0x00007f052a431e90 in  () at /usr/lib/libwayland-server.so.0
#29 0x00007f052a431f11 in wl_resource_destroy () at /usr/lib/libwayland-server.so.0
#30 0x00007f052cc703f0 in KWaylandServer::XdgToplevelInterfacePrivate::xdg_toplevel_destroy(QtWaylandServer::xdg_toplevel::Resource*) (this=0x55ecc4a143e0, resource=0x55ecc4cd6070)
    at /home/nico/kde/src/kwayland-server/src/server/xdgshell_interface.cpp:360
#31 0x00007f052cca97da in QtWaylandServer::xdg_toplevel::handle_destroy(wl_client*, wl_resource*) (client=0x55ecc4b12820, resource=0x55ecc4c7a490) at src/server/qwayland-server-xdg-shell.cpp:1050
Comment 1 Bug Janitor Service 2021-09-17 23:18:02 UTC Comment hidden (spam)
Comment 2 David Edmundson 2021-09-20 08:19:53 UTC Comment hidden (spam)
Comment 3 David Edmundson 2021-09-20 08:20:15 UTC Comment hidden (spam)
Comment 4 David Edmundson 2021-09-20 08:49:36 UTC
Heh, I had the wrong bug number. This is very unrelated.
Comment 5 Vlad Zahorodnii 2021-09-20 08:59:38 UTC
@Nicolas, is this crash still reproducible?
Comment 6 Nicolas Fella 2021-09-20 09:09:21 UTC
Sort of. It doesn't look like kwin is crashing (no coredump in coredumpctl) but plasmashell dies with "The Wayland connection broke. Did the Wayland compositor die?"
Comment 7 Vlad Zahorodnii 2021-09-20 11:32:10 UTC
It might be fixed by https://invent.kde.org/plasma/kwayland-server/-/merge_requests/293. Can you please apply it and check whether plasma still crashes? Also, make sure that you have the latest libkscreen.
Comment 8 Nicolas Fella 2021-09-20 14:37:37 UTC
It seems to fix it
Comment 9 Vlad Zahorodnii 2021-09-20 14:48:17 UTC
Please reopen this bug report if the crash comes back.

As for plasma, there are a couple of known crashes. One of them is https://bugs.kde.org/show_bug.cgi?id=428232. Another one is the assert in screenInvariant() (can be triggered even if kwin sends valid output info).
Comment 10 Nate Graham 2021-12-07 21:11:26 UTC
*** Bug 446620 has been marked as a duplicate of this bug. ***