kwin_wayland xdgv6: crash on ping

Marco Martin notmart at gmail.com
Wed Aug 2 16:44:06 UTC 2017


Hi all,
reporting it here my latest findings on a crash in the xdgv6 branch in kwin, 
which i think it *may* reveal something else wrong besides the implementation 
of the thing that it's crashing in particular (ping)
when there are many windows opening and closing, we have a kwin crash with the 
backtrace pasted below.

I get it mostly while using the file open dialog (like typing on the file name 
textbox, i guess the culript is the suggestion dropdown window appearing and 
disappearing several times)
instead, on David machine it seems to happen mostly after opening and closing 
several times kickoff

the crash at 
/home/diau/git/kf5/frameworks/kwayland/src/server/xdgshell_v6_interface.cpp:365
0x00007f6fb5b8c0a2 in zxdg_shell_v6_send_ping (resource_=0x1e908a0, 
serial=713)

suggests that resource is not valid anymore.
down the stack, the chain of events happened after one window has been closed 
and the next one should be activated

#7  0x00007f6fb64c349d in KWin::Workspace::activateNextClient (this=0x1a53de0, 
c=0x25edd70) at /home/diau/git/kf5/kde/workspace/kwin/activation.cpp:508
#8  0x00007f6fb64c2ec8 in KWin::Workspace::clientHidden (this=0x1a53de0,

this suggests that the "next" client that has been found is something not in a 
consistent state?
(the get_focus in Workspace::activateNextClient) that may suggest a 
Shellclient still existing when its surfaces have been destroyed?

do this theory makes any sense or the cause should be found elsewhere? (also, 
Martin, any idea? or i just talked nonsense? :p)

-- 
Marco Martin


#0  0x00007f6fadd4d214 in wl_resource_post_event () from /usr/lib/x86_64-
linux-gnu/libwayland-server.so.0
#1  0x00007f6fb5b8c0a2 in zxdg_shell_v6_send_ping (resource_=0x1e908a0, 
serial=713)
    at /home/diau/git/kf5/build/frameworks/kwayland/src/server/wayland-xdg-
shell-v6-server-protocol.h:144
#2  0x00007f6fb5b8cc7a in KWayland::Server::XdgShellV6Interface::Private::ping 
(this=0xf95460)
    at 
/home/diau/git/kf5/frameworks/kwayland/src/server/xdgshell_v6_interface.cpp:365
#3  0x00007f6fb5b8482f in KWayland::Server::XdgShellInterface::ping 
(this=0xf95440) at 
/home/diau/git/kf5/frameworks/kwayland/src/server/xdgshell_interface.cpp:79
#4  0x00007f6fb65ecc74 in KWin::ShellClient::takeFocus (this=0x265f880) at 
/home/diau/git/kf5/kde/workspace/kwin/shell_client.cpp:879
#5  0x00007f6fb64c2daa in KWin::Workspace::takeActivity (this=0x1a53de0, 
c=0x265f880, flags=...) at 
/home/diau/git/kf5/kde/workspace/kwin/activation.cpp:397
#6  0x00007f6fb64c28ce in KWin::Workspace::requestFocus (this=0x1a53de0, 
c=0x265f880, force=false) at 
/home/diau/git/kf5/kde/workspace/kwin/activation.cpp:343
#7  0x00007f6fb64c349d in KWin::Workspace::activateNextClient (this=0x1a53de0, 
c=0x25edd70) at /home/diau/git/kf5/kde/workspace/kwin/activation.cpp:508
#8  0x00007f6fb64c2ec8 in KWin::Workspace::clientHidden (this=0x1a53de0, 
c=0x25edd70) at /home/diau/git/kf5/kde/workspace/kwin/activation.cpp:415
#9  0x00007f6fb63c0b9d in 
KWin::Workspace::<lambda(KWin::ShellClient*)>::operator()(KWin::ShellClient *) 
const (__closure=0x1ab61c0, c=0x25edd70)
    at /home/diau/git/kf5/kde/workspace/kwin/workspace.cpp:431
#10 0x00007f6fb63cef51 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, 
QtPrivate::List<KWin::ShellClient*>, void, 
KWin::Workspace::init()::<lambda(KWin::ShellClient*)> 
>::call(KWin::Workspace::<lambda(KWin::ShellClient*)> &, void **) (f=..., 
arg=0x7fff537d3580) at /opt/kde5/include/QtCore/qobjectdefs_impl.h:130
#11 0x00007f6fb63cec14 in 
QtPrivate::Functor<KWin::Workspace::init()::<lambda(KWin::ShellClient*)>, 
1>::call<QtPrivate::List<KWin::ShellClient*>, 
void>(KWin::Workspace::<lambda(KWin::ShellClient*)> &, void *, void **) 
(f=..., arg=0x7fff537d3580) at /opt/kde5/include/QtCore/qobjectdefs_impl.h:240
#12 0x00007f6fb63ce57f in 
QtPrivate::QFunctorSlotObject<KWin::Workspace::init()::<lambda(KWin::ShellClient*)>, 
1, QtPrivate::List<KWin::ShellClient*>, void>::impl(int, 
QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, 
this_=0x1ab61b0, r=0x1a53de0, a=0x7fff537d3580, ret=0x0)
    at /opt/kde5/include/QtCore/qobject_impl.h:168
#13 0x00007f6fb49b7d11 in QtPrivate::QSlotObjectBase::call (a=<optimized out>, 
r=0x1a53de0, this=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:101
#14 QMetaObject::activate (sender=sender at entry=0xf83970, 
signalOffset=<optimized out>, local_signal_index=local_signal_index at entry=1, 
argv=argv at entry=0x7fff537d3580)
    at kernel/qobject.cpp:3749
#15 0x00007f6fb49b81d7 in QMetaObject::activate (sender=0xf83970, m=<optimized 
out>, local_signal_index=1, argv=0x7fff537d3580) at kernel/qobject.cpp:3628
#16 0x00007f6fb6676a2a in KWin::WaylandServer::shellClientRemoved 
(this=0xf83970, _t1=0x25edd70)
    at /home/diau/git/kf5/build/kde/workspace/kwin/moc_wayland_server.cpp:171
#17 0x00007f6fb65fb123 in KWin::WaylandServer::removeClient (this=0xf83970, 
c=0x25edd70) at /home/diau/git/kf5/kde/workspace/kwin/wayland_server.cpp:532
#18 0x00007f6fb65ea88c in KWin::ShellClient::destroyClient (this=0x25edd70) at 
/home/diau/git/kf5/kde/workspace/kwin/shell_client.cpp:330
#19 0x00007f6fb65f7cd3 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, 
QtPrivate::List<>, void, void (KWin::ShellClient::*)()>::call(void 
(KWin::ShellClient::*)(), KWin::ShellClient*, void**) (f=(void 
(KWin::ShellClient::*)(KWin::ShellClient * const)) 0x7f6fb65ea694 
<KWin::ShellClient::destroyClient()>, o=0x25edd70,


More information about the Plasma-devel mailing list