Bug 361018 - kwin crashes
Summary: kwin crashes
Status: RESOLVED UPSTREAM
Alias: None
Product: kwin
Classification: Plasma
Component: general (other bugs)
Version First Reported In: 5.6.0
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2016-03-26 17:45 UTC by Vincent-Xavier JUMEL
Modified: 2016-04-01 13:14 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vincent-Xavier JUMEL 2016-03-26 17:45:49 UTC
Application: kwin_x11 (5.6.0)
 (Compiled from sources)
Qt Version: 5.5.1
Frameworks Version: 5.20.0
Operating System: Linux 4.5.0-gentoo x86_64
Distribution: "Gentoo Base System release 2.2"

-- Information about the crash:
- Most of the time, launching mpv 0.16.0 makes kwin to crash.
mpv is compiled from source, and I'm using EGL backend.

The crash can be reproduced sometimes.

-- Backtrace:
Application: KWin (kwin_x11), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
pthread_cond_wait () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
[Current thread is 1 (Thread 0x7fda60863840 (LWP 1420))]

Thread 8 (Thread 0x7fda5fd0a700 (LWP 1429)):
#0  0x00007fda76bf4c8d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fda75007b12 in poll (__timeout=-1, __nfds=1, __fds=0x7fda5fd09c80) at /usr/include/bits/poll2.h:46
#2  _xcb_conn_wait (c=c@entry=0x638910, cond=cond@entry=0x638950, vector=vector@entry=0x0, count=count@entry=0x0) at /var/tmp/portage/x11-libs/libxcb-1.11.1/work/libxcb-1.11.1/src/xcb_conn.c:459
#3  0x00007fda750098d7 in xcb_wait_for_event (c=0x638910) at /var/tmp/portage/x11-libs/libxcb-1.11.1/work/libxcb-1.11.1/src/xcb_in.c:693
#4  0x00007fda605b4ce9 in QXcbEventReader::run (this=0x64b8f0) at qxcbconnection.cpp:1229
#5  0x00007fda752c1812 in QThreadPrivate::start (arg=0x64b8f0) at thread/qthread_unix.cpp:331
#6  0x00007fda76eba5c6 in start_thread (arg=0x7fda5fd0a700) at pthread_create.c:334
#7  0x00007fda76bfe0cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 7 (Thread 0x7fda54c86700 (LWP 1430)):
#0  pthread_cond_wait () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fda5e948a8b in cnd_wait (mtx=0x68d990, cond=0x68d9b8) at /var/tmp/portage/media-libs/mesa-11.1.2-r1/work/mesa-11.1.2/include/c11/threads_posix.h:159
#2  pipe_semaphore_wait (sema=0x68d990) at /var/tmp/portage/media-libs/mesa-11.1.2-r1/work/mesa-11.1.2/src/gallium/auxiliary/os/os_thread.h:259
#3  radeon_drm_cs_emit_ioctl (param=param@entry=0x68d640) at /var/tmp/portage/media-libs/mesa-11.1.2-r1/work/mesa-11.1.2/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c:653
#4  0x00007fda5e9481b7 in impl_thrd_routine (p=<optimized out>) at /var/tmp/portage/media-libs/mesa-11.1.2-r1/work/mesa-11.1.2/include/c11/threads_posix.h:87
#5  0x00007fda76eba5c6 in start_thread (arg=0x7fda54c86700) at pthread_create.c:334
#6  0x00007fda76bfe0cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 6 (Thread 0x7fda51f03700 (LWP 1449)):
#0  0x00007fda76bf6bc3 in select () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fda754b49af in qt_safe_select (nfds=18, fdread=fdread@entry=0x7fda44000a78, fdwrite=fdwrite@entry=0x7fda44000d08, fdexcept=fdexcept@entry=0x7fda44000f98, orig_timeout=orig_timeout@entry=0x0) at kernel/qcore_unix.cpp:75
#2  0x00007fda754b5f93 in QEventDispatcherUNIX::select (timeout=0x0, exceptfds=0x7fda44000f98, writefds=0x7fda44000d08, readfds=0x7fda44000a78, nfds=<optimized out>, this=0x7fda440008c0) at kernel/qeventdispatcher_unix.cpp:320
#3  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7fda440008e0, flags=..., flags@entry=..., timeout=timeout@entry=0x0) at kernel/qeventdispatcher_unix.cpp:196
#4  0x00007fda754b64be in QEventDispatcherUNIX::processEvents (this=0x7fda440008c0, flags=...) at kernel/qeventdispatcher_unix.cpp:607
#5  0x00007fda75468fea in QEventLoop::exec (this=this@entry=0x7fda51f02d60, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007fda752bd076 in QThread::exec (this=this@entry=0x8f25b0) at thread/qthread.cpp:503
#7  0x00007fda6f92d645 in QQmlThreadPrivate::run (this=0x8f25b0) at qml/ftw/qqmlthread.cpp:141
#8  0x00007fda752c1812 in QThreadPrivate::start (arg=0x8f25b0) at thread/qthread_unix.cpp:331
#9  0x00007fda76eba5c6 in start_thread (arg=0x7fda51f03700) at pthread_create.c:334
#10 0x00007fda76bfe0cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 5 (Thread 0x7fda4affd700 (LWP 1469)):
#0  pthread_cond_wait () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fda74437e64 in QTWTF::TCMalloc_PageHeap::scavengerThread (this=0x7fda74523a20 <QTWTF::pageheap_memory>) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2359
#2  0x00007fda74437ea9 in QTWTF::TCMalloc_PageHeap::runScavengerThread (context=<optimized out>) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1464
#3  0x00007fda76eba5c6 in start_thread (arg=0x7fda4affd700) at pthread_create.c:334
#4  0x00007fda76bfe0cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 4 (Thread 0x7fda4b7fe700 (LWP 2355)):
#0  __libc_enable_asynccancel () at ../sysdeps/unix/sysv/linux/x86_64/cancellation.S:61
#1  0x00007fda76bf6bb5 in select () at ../sysdeps/unix/syscall-template.S:84
#2  0x00007fda754b49af in qt_safe_select (nfds=16, fdread=fdread@entry=0x7fda38000a78, fdwrite=fdwrite@entry=0x7fda38000d08, fdexcept=fdexcept@entry=0x7fda38000f98, orig_timeout=orig_timeout@entry=0x0) at kernel/qcore_unix.cpp:75
#3  0x00007fda754b5f93 in QEventDispatcherUNIX::select (timeout=0x0, exceptfds=0x7fda38000f98, writefds=0x7fda38000d08, readfds=0x7fda38000a78, nfds=<optimized out>, this=0x7fda380008c0) at kernel/qeventdispatcher_unix.cpp:320
#4  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7fda380008e0, flags=..., flags@entry=..., timeout=timeout@entry=0x0) at kernel/qeventdispatcher_unix.cpp:196
#5  0x00007fda754b64be in QEventDispatcherUNIX::processEvents (this=0x7fda380008c0, flags=...) at kernel/qeventdispatcher_unix.cpp:607
#6  0x00007fda75468fea in QEventLoop::exec (this=this@entry=0x7fda4b7fdd60, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#7  0x00007fda752bd076 in QThread::exec (this=this@entry=0xeddff0) at thread/qthread.cpp:503
#8  0x00007fda6f92d645 in QQmlThreadPrivate::run (this=0xeddff0) at qml/ftw/qqmlthread.cpp:141
#9  0x00007fda752c1812 in QThreadPrivate::start (arg=0xeddff0) at thread/qthread_unix.cpp:331
#10 0x00007fda76eba5c6 in start_thread (arg=0x7fda4b7fe700) at pthread_create.c:334
#11 0x00007fda76bfe0cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7fda52ada700 (LWP 2356)):
[KCrash Handler]
#6  0x00007fda69bf3356 in dri2_make_current (drv=0x66f520, disp=0x670430, dsurf=0x0, rsurf=0x0, ctx=0x0) at /var/tmp/portage/media-libs/mesa-11.1.2-r1/work/mesa-11.1.2/src/egl/drivers/dri2/egl_dri2.c:1199
#7  0x00007fda69be9b42 in eglMakeCurrent (dpy=0x670430, draw=draw@entry=0x0, read=read@entry=0x0, ctx=ctx@entry=0x0) at /var/tmp/portage/media-libs/mesa-11.1.2-r1/work/mesa-11.1.2/src/egl/main/eglapi.c:703
#8  0x00007fda774f07cf in QEGLPlatformContext::doneCurrent (this=0x11dba80) at eglconvenience/qeglplatformcontext.cpp:400
#9  0x00007fda757bde77 in QOpenGLContext::doneCurrent (this=0x11d2dd0) at kernel/qopenglcontext.cpp:969
#10 0x00007fda6fe20b71 in QSGRenderThread::event (this=0x11df4c0, e=<optimized out>) at scenegraph/qsgthreadedrenderloop.cpp:348
#11 0x00007fda6fe1ef8c in QSGRenderThread::processEventsAndWaitForMore (this=this@entry=0x11df4c0) at scenegraph/qsgthreadedrenderloop.cpp:658
#12 0x00007fda6fe1f873 in QSGRenderThread::run (this=0x11df4c0) at scenegraph/qsgthreadedrenderloop.cpp:686
#13 0x00007fda752c1812 in QThreadPrivate::start (arg=0x11df4c0) at thread/qthread_unix.cpp:331
#14 0x00007fda76eba5c6 in start_thread (arg=0x7fda52ada700) at pthread_create.c:334
#15 0x00007fda76bfe0cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7fd9b4f0f700 (LWP 17782)):
#0  pthread_cond_wait () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fda752c1efa in QWaitConditionPrivate::wait (time=18446744073709551615, this=0x15b8790) at thread/qwaitcondition_unix.cpp:136
#2  QWaitCondition::wait (this=this@entry=0x15afab8, mutex=mutex@entry=0x15afab0, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:208
#3  0x00007fda6fe1efce in QSGRenderThreadEventQueue::takeEvent (wait=true, this=0x15afaa8) at scenegraph/qsgthreadedrenderloop.cpp:224
#4  QSGRenderThread::processEventsAndWaitForMore (this=this@entry=0x15afa30) at scenegraph/qsgthreadedrenderloop.cpp:657
#5  0x00007fda6fe1f873 in QSGRenderThread::run (this=0x15afa30) at scenegraph/qsgthreadedrenderloop.cpp:686
#6  0x00007fda752c1812 in QThreadPrivate::start (arg=0x15afa30) at thread/qthread_unix.cpp:331
#7  0x00007fda76eba5c6 in start_thread (arg=0x7fd9b4f0f700) at pthread_create.c:334
#8  0x00007fda76bfe0cd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7fda60863840 (LWP 1420)):
#0  pthread_cond_wait () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fda752c1efa in QWaitConditionPrivate::wait (time=18446744073709551615, this=0x11dbe50) at thread/qwaitcondition_unix.cpp:136
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x11df500, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:208
#3  0x00007fda6fe1cecc in QSGThreadedRenderLoop::handleObscurity (this=this@entry=0x104df40, w=w@entry=0x11dbf30) at scenegraph/qsgthreadedrenderloop.cpp:965
#4  0x00007fda6fe1df5b in QSGThreadedRenderLoop::windowDestroyed (this=0x104df40, window=0x104d5e0) at scenegraph/qsgthreadedrenderloop.cpp:833
#5  0x00007fda6fe49c7b in QQuickWindow::~QQuickWindow (this=0x104d5e0, __in_chrg=<optimized out>) at items/qquickwindow.cpp:1119
#6  0x00007fda746057de in KWin::DesktopButtonsView::~DesktopButtonsView (this=0x104d5e0, __in_chrg=<optimized out>) at /var/tmp/portage/kde-plasma/kwin-5.6.0/work/kwin-5.6.0_build/effects/../../kwin-5.6.0/effects/desktopgrid/desktopgrid.h:35
#7  KWin::DesktopButtonsView::~DesktopButtonsView (this=0x104d5e0, __in_chrg=<optimized out>) at /var/tmp/portage/kde-plasma/kwin-5.6.0/work/kwin-5.6.0_build/effects/../../kwin-5.6.0/effects/desktopgrid/desktopgrid.h:35
#8  0x00007fda75494010 in QObject::event (this=this@entry=0x104d5e0, e=<optimized out>) at kernel/qobject.cpp:1230
#9  0x00007fda75794328 in QWindow::event (this=this@entry=0x104d5e0, ev=ev@entry=0xdefcb0) at kernel/qwindow.cpp:2071
#10 0x00007fda6fe52e39 in QQuickWindow::event (this=0x104d5e0, e=0xdefcb0) at items/qquickwindow.cpp:1413
#11 0x00007fda75c6c04c in QApplicationPrivate::notify_helper (this=this@entry=0x6304b0, receiver=receiver@entry=0x104d5e0, e=e@entry=0xdefcb0) at kernel/qapplication.cpp:3716
#12 0x00007fda75c716d5 in QApplication::notify (this=0x7ffcbc4f1700, receiver=0x104d5e0, e=0xdefcb0) at kernel/qapplication.cpp:3499
#13 0x00007fda7546a20c in QCoreApplication::notifyInternal (this=0x7ffcbc4f1700, receiver=0x104d5e0, event=event@entry=0xdefcb0) at kernel/qcoreapplication.cpp:965
#14 0x00007fda7546cf16 in QCoreApplication::sendEvent (event=0xdefcb0, receiver=<optimized out>) at kernel/qcoreapplication.h:224
#15 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x6205d0) at kernel/qcoreapplication.cpp:1593
#16 0x00007fda754b6382 in QEventDispatcherUNIX::processEvents (this=0x6bf810, flags=flags@entry=...) at kernel/qeventdispatcher_unix.cpp:579
#17 0x00007fda6061ee8d in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...) at eventdispatchers/qunixeventdispatcher.cpp:62
#18 0x00007fda75468fea in QEventLoop::exec (this=this@entry=0x7ffcbc4f15f0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#19 0x00007fda7547047c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1229
#20 0x00007fda7578221c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1527
#21 0x00007fda75c68325 in QApplication::exec () at kernel/qapplication.cpp:2976
#22 0x00007fda770d5924 in kdemain (argc=1, argv=0x7ffcbc4f1888) at /var/tmp/portage/kde-plasma/kwin-5.6.0/work/kwin-5.6.0/main_x11.cpp:327
#23 0x00007fda76b335f0 in __libc_start_main (main=0x4007e0 <main(int, char**)>, argc=3, argv=0x7ffcbc4f1888, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffcbc4f1878) at libc-start.c:289
#24 0x0000000000400819 in _start ()

Reported using DrKonqi
Comment 1 Thomas Lübking 2016-03-26 21:53:52 UTC
mpv suspends the compositor, that deletes the QML driven buttons in the desktop grid (present windows close button might be affected likewise) and that has somehow a bad teardown order.

No idea whether to blame QtQuick, MESA or the particular driver - looks a bit like dri2_dpy or dri2_dpy->core (in https://cgit.freedesktop.org/cgit/?url=mesa/mesa/tree/src/egl/drivers/dri2/egl_dri2.c) are 0x0 or dangeling?

=> woraround is to either adda rule that forces MPV to *not* suspend the compositor (but you'll likely get segfaults on doing that by shortcut as well) or disable the buttons for the desktop grid and present windows effects.

Chances to check what's going on in egl/drivers/dri2/egl_dri2.c (printf the pointer positions or similar - ideally it's just a nullptr deref)?

Another possible workaouround in KWin might be to take the buttonviews out of moc's child/parent related and attempt to deleteLater them - but that's sick.
Comment 2 Martin Flöser 2016-04-01 13:14:41 UTC
also check whether you really intend to use egl in Qt. That's not the default and clearly not the intended renderer for Qt on X11. Sounds like you set the wrong flags in your Qt build.