Bug 379369 - kwin_wayland crash when closing down
Summary: kwin_wayland crash when closing down
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (show other bugs)
Version: 5.9.5
Platform: Fedora RPMs Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-04-29 23:58 UTC by Andrei Amuraritei
Modified: 2017-11-11 12:43 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
mgraesslin: Wayland+
mgraesslin: X11-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrei Amuraritei 2017-04-29 23:58:36 UTC
Thread 1 "kwin_wayland" received signal SIGSEGV, Segmentation fault.
0x00007fffeb954639 in wl_map_insert_at (map=<optimized out>, flags=flags@entry=0, i=<optimized out>, data=<optimized out>)
    at src/wayland-util.c:249
249             start[i].next |= (flags & 0x1) << 1;
Missing separate debuginfos, use: dnf debuginfo-install compat-openssl10-1.0.2j-6.fc26.x86_64
(gdb) 

#0  0x00007fffeb954639 in wl_map_insert_at (map=<optimized out>, flags=flags@entry=0, i=<optimized out>, data=<optimized out>)
    at src/wayland-util.c:249
#1  0x00007fffea3ebafe in proxy_destroy (proxy=0x555555896980) at src/wayland-client.c:411
#2  0x00007fffea3ebafe in wl_proxy_destroy (proxy=0x555555896980) at src/wayland-client.c:442
#3  0x00007ffff1e9d4c5 in wl_registry_destroy (wl_registry=<optimized out>) at /usr/include/wayland-client-protocol.h:1065
#4  0x00007ffff1e9d4c5 in KWayland::Client::WaylandPointer<wl_registry, wl_registry_destroy>::release (this=0x555555896930, this=0x555555896930) at /usr/src/debug/kwayland-5.33.0/src/client/wayland_pointer_p.h:53
#5  0x00007ffff1e9d4c5 in KWayland::Client::Registry::release() (this=this@entry=0x5555557a4510)
    at /usr/src/debug/kwayland-5.33.0/src/client/registry.cpp:358
#6  0x00007ffff1e9d4ec in KWayland::Client::Registry::~Registry() (this=0x5555557a4510, __in_chrg=<optimized out>)
    at /usr/src/debug/kwayland-5.33.0/src/client/registry.cpp:353
#7  0x00007ffff1e9d579 in KWayland::Client::Registry::~Registry() (this=0x5555557a4510, __in_chrg=<optimized out>)
    at /usr/src/debug/kwayland-5.33.0/src/client/registry.cpp:354
#8  0x00007ffff00c9a88 in QObjectPrivate::deleteChildren() (this=this@entry=0x5555557b96c0) at kernel/qobject.cpp:1970
#9  0x00007ffff00ca962 in QObject::~QObject() (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qobject.cpp:1041
#10 0x00007fffd839cbf9 in Breeze::ShadowHelper::~ShadowHelper() (this=0x5555557b9090, __in_chrg=<optimized out>)
    at /usr/src/debug/breeze-5.9.5/kstyle/breezeshadowhelper.cpp:80
#11 0x00007fffd83a64a6 in Breeze::Style::~Style() (this=0x5555557a9850, __in_chrg=<optimized out>)
    at /usr/src/debug/breeze-5.9.5/kstyle/breezestyle.cpp:200
#12 0x00007fffd83a6569 in Breeze::Style::~Style() (this=0x5555557a9850, __in_chrg=<optimized out>)
    at /usr/src/debug/breeze-5.9.5/kstyle/breezestyle.cpp:202
#13 0x00007ffff08ef713 in QApplication::~QApplication() (this=0x7fffffffdba0, __in_chrg=<optimized out>) at kernel/qapplication.cpp:870
#14 0x000055555555df29 in KWin::ApplicationWayland::~ApplicationWayland() (this=0x7fffffffdba0, __in_chrg=<optimized out>)
    at /usr/src/debug/kwin-5.9.5/main_wayland.cpp:88
#15 0x000055555555bed4 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kwin-5.9.5/main_wayland.cpp:474
Comment 1 Martin Flöser 2017-05-02 07:48:35 UTC
compare adcd98aa1f2ac2f3d0da46dcc41eb23944acbafe in breeze
Comment 2 David Edmundson 2017-05-06 12:57:16 UTC
Valgrind log

==8862== 
==8862== Invalid read of size 8
==8862==    at 0x11364BBD: wl_map_insert_at (in /usr/lib/libwayland-server.so.0.1.0)
==8862==    by 0x126B0F1D: wl_proxy_destroy (in /usr/lib/libwayland-client.so.0.3.0)
==8862==    by 0xB0922D6: org_kde_kwin_shadow_manager_destroy (wayland-shadow-client-protocol.h:135)
==8862==    by 0xB09354B: KWayland::Client::WaylandPointer<org_kde_kwin_shadow_manager, &org_kde_kwin_shadow_manager_destroy>::release() (wayland_pointer_p.h:53)
==8862==    by 0xB09266B: KWayland::Client::ShadowManager::release() (shadow.cpp:57)
==8862==    by 0xB092601: KWayland::Client::ShadowManager::~ShadowManager() (shadow.cpp:52)
==8862==    by 0xB092639: KWayland::Client::ShadowManager::~ShadowManager() (shadow.cpp:53)
==8862==    by 0xD59331E: QObjectPrivate::deleteChildren() (qobject.cpp:1992)
==8862==    by 0xD5945CC: QObject::~QObject() (qobject.cpp:1022)
==8862==    by 0x1D1FA35F: Breeze::ShadowHelper::~ShadowHelper() (breezeshadowhelper.cpp:72)
==8862==    by 0x1D1FA37F: Breeze::ShadowHelper::~ShadowHelper() (breezeshadowhelper.cpp:80)
==8862==    by 0x1D2012A7: Breeze::Style::~Style() (breezestyle.cpp:200)
==8862==  Address 0x1b9bfa08 is 120 bytes inside a block of size 320 free'd
==8862==    at 0x4C2C14B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8862==    by 0xB04C5CE: KWayland::Client::ConnectionThread::Private::~Private() (connection_thread.cpp:76)
==8862==    by 0xB04E97F: QScopedPointerDeleter<KWayland::Client::ConnectionThread::Private>::cleanup(KWayland::Client::ConnectionThread::Private*) (qscopedpointer.h:60)
==8862==    by 0xB04E79C: QScopedPointer<KWayland::Client::ConnectionThread::Private, QScopedPointerDeleter<KWayland::Client::ConnectionThread::Private> >::~QScopedPointer() (qscopedpointer.h:107)
==8862==    by 0xB04D071: KWayland::Client::ConnectionThread::~ConnectionThread() (connection_thread.cpp:184)
==8862==    by 0xB04D099: KWayland::Client::ConnectionThread::~ConnectionThread() (connection_thread.cpp:187)
==8862==    by 0xD58BC71: qDeleteInEventHandler(QObject*) (qobject.cpp:4596)
==8862==    by 0xD58D9E3: QObject::event(QEvent*) (qobject.cpp:1237)
==8862==    by 0xC8136A2: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3713)
==8862==    by 0xC81B44D: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3085)
==8862==    by 0xD55DD6D: QCoreApplication::notifyInternal2(QObject*, QEvent*) (qcoreapplication.cpp:1014)
==8862==    by 0xD562D2E: sendEvent (qcoreapplication.h:233)
==8862==    by 0xD562D2E: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (qcoreapplication.cpp:1674)

----------
The clientConnectionThread deleteLater() trace is:

Thread 1 "kwin_wayland" hit Breakpoint 2, KWin::WaylandServer::destroyInternalConnection (this=0x6a0f60)
    at /home/david/projects/kde5/src/kde/workspace/kwin/wayland_server.cpp:91
91          emit terminatingInternalClientConnection();
(gdb) bt
#0  0x00007ffff7a05b7c in KWin::WaylandServer::destroyInternalConnection() (this=0x6a0f60)
    at /home/david/projects/kde5/src/kde/workspace/kwin/wayland_server.cpp:91
#1  0x00007ffff7a05cd4 in KWin::WaylandServer::terminateClientConnections() (this=0x6a0f60)
    at /home/david/projects/kde5/src/kde/workspace/kwin/wayland_server.cpp:108
#2  0x00000000004080d0 in KWin::ApplicationWayland::~ApplicationWayland() (this=0x7fffffffd7d0, __in_chrg=<optimized out>)
    at /home/david/projects/kde5/src/kde/workspace/kwin/main_wayland.cpp:121
#3  0x000000000040cf93 in main(int, char**) (argc=9, argv=0x7fffffffe238)
    at /home/david/projects/kde5/src/kde/workspace/kwin/main_wayland.cpp:472
(gdb)
Comment 3 Fabian Vogt 2017-08-08 07:05:00 UTC
Still happens with Plasma 5.10.4 and kwin master.
Comment 4 Martin Flöser 2017-08-08 14:49:39 UTC
(In reply to Fabian Vogt from comment #3)
> Still happens with Plasma 5.10.4 and kwin master.

Same backtrace? The crash here should be fixed (at least the test case which used to crash doesn't crash any more). But it's possible that there are other crashes on tear down.
Comment 5 Fabian Vogt 2017-08-08 14:56:51 UTC
(In reply to Martin Flöser from comment #4)
> (In reply to Fabian Vogt from comment #3)
> > Still happens with Plasma 5.10.4 and kwin master.
> 
> Same backtrace? The crash here should be fixed (at least the test case which
> used to crash doesn't crash any more). But it's possible that there are
> other crashes on tear down.

The exact same backtrace:

#0  0x00007fffe9c9d039 in wl_map_insert_at () at /usr/lib64/libwayland-server.so.0
#1  0x00007fffe8d621ae in wl_proxy_destroy () at /usr/lib64/libwayland-client.so.0
#2  0x00007ffff0ec4f15 in KWayland::Client::Registry::release() () at /usr/lib64/libKF5WaylandClient.so.5
#3  0x00007ffff0ec4f3c in KWayland::Client::Registry::~Registry() () at /usr/lib64/libKF5WaylandClient.so.5
#4  0x00007ffff0ec4fc9 in KWayland::Client::Registry::~Registry() () at /usr/lib64/libKF5WaylandClient.so.5
#5  0x00007fffee17702b in QObjectPrivate::deleteChildren() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fffee18038b in QObject::~QObject() () at /usr/lib64/libQt5Core.so.5
#7  0x00007fffdddd55ff in Breeze::ShadowHelper::~ShadowHelper() () at /usr/lib64/qt5/plugins/styles/breeze.so
#8  0x00007fffdddd5620 in Breeze::ShadowHelper::~ShadowHelper() () at /usr/lib64/qt5/plugins/styles/breeze.so
#9  0x00007fffddddb6d8 in Breeze::Style::~Style() () at /usr/lib64/qt5/plugins/styles/breeze.so
#10 0x00007fffddddb73c in Breeze::Style::~Style() () at /usr/lib64/qt5/plugins/styles/breeze.so
#11 0x00007fffeeed1275 in QApplication::~QApplication() () at /usr/lib64/libQt5Widgets.so.5
#12 0x00007ffff78f6960 in KWin::Application::~Application() () at /usr/lib64/libkwin.so.5
#13 0x000000000040899a in KWin::ApplicationWayland::~ApplicationWayland() ()
#14 0x000000000040d690 in main ()
Comment 6 Martin Flöser 2017-08-08 16:49:28 UTC
and you also use KWayland master?
Comment 7 Fabian Vogt 2017-08-08 16:51:05 UTC
(In reply to Martin Flöser from comment #6)
> and you also use KWayland master?

No, 5.36. I'll try it with master.
Comment 8 Fabian Vogt 2017-08-08 16:58:36 UTC
(In reply to Fabian Vogt from comment #7)
> (In reply to Martin Flöser from comment #6)
> > and you also use KWayland master?
> 
> No, 5.36. I'll try it with master.

Still happens.
Comment 9 Martin Flöser 2017-08-08 17:35:33 UTC
Thanks for testing, that's weird
Comment 10 Martin Flöser 2017-10-16 20:03:14 UTC
Is this still the case? With the tests which should trigger the Breeze shadow I'm not able to trigger any crash.
Comment 11 Fabian Vogt 2017-10-16 20:09:35 UTC
(In reply to Martin Flöser from comment #10)
> Is this still the case? With the tests which should trigger the Breeze
> shadow I'm not able to trigger any crash.

I haven't seen it in a while, but that might be a coincidence.
Comment 12 Martin Flöser 2017-11-11 12:43:02 UTC
Assuming fixed. If it happens again, please reopen.