Bug 381767 - Freeze in KWin::checkGLError on startup
Summary: Freeze in KWin::checkGLError on startup
Status: RESOLVED DUPLICATE of bug 381870
Alias: None
Product: kwin
Classification: Plasma
Component: scene-opengl (show other bugs)
Version: 5.10.3
Platform: Neon Linux
: VHI critical
Target Milestone: ---
Assignee: KWin default assignee
URL: https://phabricator.kde.org/D6464
Keywords: drkonqi
: 381903 381938 381941 (view as bug list)
Depends on:
Blocks:
 
Reported: 2017-06-28 16:44 UTC by Ivan Borisov
Modified: 2017-07-30 03:29 UTC (History)
8 users (show)

See Also:
Latest Commit:
Version Fixed In:
mgraesslin: NVIDIA+
mgraesslin: ReviewRequest+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan Borisov 2017-06-28 16:44:37 UTC
Application: kwin_x11 (5.10.3)

Qt Version: 5.9.0
Frameworks Version: 5.35.0
Operating System: Linux 4.10.0-24-generic x86_64
Distribution: KDE neon User Edition 5.10

-- Information about the crash:
- What I was doing when the application crashed:
Login to KWin crashes the animation system. Restart animation system(OpenGL 3.1) fixes the problem until the next login.

The crash can be reproduced every time.

-- Backtrace:
Application: KWin (kwin_x11), signal: Aborted
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
[Current thread is 1 (Thread 0x7f72c5ef8900 (LWP 9506))]

Thread 7 (Thread 0x7f72bd2a1700 (LWP 11133)):
[KCrash Handler]
#6  0x0000003d40e35428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#7  0x0000003d40e3702a in __GI_abort () at abort.c:89
#8  0x00007f72c74b25b1 in qt_message_fatal (context=..., message=<synthetic pointer>) at global/qlogging.cpp:1690
#9  QMessageLogger::fatal (this=this@entry=0x7f72bd2a06b0, msg=msg@entry=0x7f72be509528 "Freeze in OpenGL initialization detected") at global/qlogging.cpp:796
#10 0x00007f72be4f0e23 in KWin::X11StandalonePlatform::<lambda()>::operator() (__closure=<optimized out>) at /workspace/build/plugins/platforms/x11/standalone/x11_platform.cpp:224
#11 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::X11StandalonePlatform::createOpenGLSafePoint(KWin::Platform::OpenGLSafePoint)::<lambda()> >::call (f=..., arg=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:130
#12 QtPrivate::Functor<KWin::X11StandalonePlatform::createOpenGLSafePoint(KWin::Platform::OpenGLSafePoint)::<lambda()>, 0>::call<QtPrivate::List<>, void> (f=..., arg=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:242
#13 QtPrivate::QFunctorSlotObject<KWin::X11StandalonePlatform::createOpenGLSafePoint(KWin::Platform::OpenGLSafePoint)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:168
#14 0x00007f72c76c33f6 in QtPrivate::QSlotObjectBase::call (a=0x7f72bd2a0820, r=0x204e0e0, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:101
#15 QMetaObject::activate (sender=sender@entry=0x204e0e0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7f72bd2a0820) at kernel/qobject.cpp:3749
#16 0x00007f72c76c39d7 in QMetaObject::activate (sender=sender@entry=0x204e0e0, m=m@entry=0x7f72c7954700 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7f72bd2a0820) at kernel/qobject.cpp:3628
#17 0x00007f72c773c7c7 in QTimer::timeout (this=this@entry=0x204e0e0, _t1=...) at .moc/moc_qtimer.cpp:201
#18 0x00007f72c76cf8e8 in QTimer::timerEvent (this=0x204e0e0, e=<optimized out>) at kernel/qtimer.cpp:255
#19 0x00007f72c76c40c3 in QObject::event (this=0x204e0e0, e=<optimized out>) at kernel/qobject.cpp:1268
#20 0x00007f72c80043fc in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x204e0e0, e=0x7f72bd2a0b10) at kernel/qapplication.cpp:3717
#21 0x00007f72c800be07 in QApplication::notify (this=0x7fffef8a6100, receiver=0x204e0e0, e=0x7f72bd2a0b10) at kernel/qapplication.cpp:3476
#22 0x00007f72c7697128 in QCoreApplication::notifyInternal2 (receiver=0x204e0e0, event=event@entry=0x7f72bd2a0b10) at kernel/qcoreapplication.cpp:1018
#23 0x00007f72c76ea6fe in QCoreApplication::sendEvent (event=0x7f72bd2a0b10, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:233
#24 QTimerInfoList::activateTimers (this=this@entry=0x7f72b0016640) at kernel/qtimerinfo_unix.cpp:643
#25 0x00007f72c76e749c in QEventDispatcherUNIXPrivate::activateTimers (this=this@entry=0x7f72b00165a0) at kernel/qeventdispatcher_unix.cpp:249
#26 0x00007f72c76e8692 in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:514
#27 0x00007f72c769530a in QEventLoop::exec (this=this@entry=0x7f72bd2a0cc0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#28 0x00007f72c74c4af4 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:515
#29 0x00007f72c74c9509 in QThreadPrivate::start (arg=0x1fedfa0) at thread/qthread_unix.cpp:368
#30 0x0000003d416076ba in start_thread (arg=0x7f72bd2a1700) at pthread_create.c:333
#31 0x0000003d40f073dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 6 (Thread 0x7f72aa173700 (LWP 9635)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x0000003d6197c784 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Script.so.5
#2  0x0000003d6197c7c9 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Script.so.5
#3  0x0000003d416076ba in start_thread (arg=0x7f72aa173700) at pthread_create.c:333
#4  0x0000003d40f073dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 5 (Thread 0x7f72abfff700 (LWP 9633)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225
#1  0x00007f72b6570e44 in ?? () from /usr/lib/nvidia-378/libGLX_nvidia.so.0
#2  0x00007f72b528e394 in ?? () from /usr/lib/nvidia-378/libnvidia-glcore.so.378.13
#3  0x00007f72b657012c in ?? () from /usr/lib/nvidia-378/libGLX_nvidia.so.0
#4  0x0000003d416076ba in start_thread (arg=0x7f72abfff700) at pthread_create.c:333
#5  0x0000003d40f073dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 4 (Thread 0x7f72b7fff700 (LWP 9630)):
#0  0x0000003d40efb7d1 in __GI_ppoll (fds=fds@entry=0x7f72ac000ac8, nfds=nfds@entry=1, timeout=<optimized out>, timeout@entry=0x0, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:50
#1  0x00007f72c76e6dc1 in ppoll (__ss=<optimized out>, __timeout=<optimized out>, __nfds=<optimized out>, __fds=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/poll2.h:77
#2  qt_ppoll (timeout_ts=0x0, nfds=1, fds=0x7f72ac000ac8) at kernel/qcore_unix.cpp:81
#3  qt_safe_poll (fds=0x7f72ac000ac8, nfds=1, timeout_ts=timeout_ts@entry=0x0) at kernel/qcore_unix.cpp:102
#4  0x00007f72c76e8422 in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:500
#5  0x00007f72c769530a in QEventLoop::exec (this=this@entry=0x7f72b7ffeca0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#6  0x00007f72c74c4af4 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:515
#7  0x0000003d54ad3075 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5
#8  0x00007f72c74c9509 in QThreadPrivate::start (arg=0x1ddc7f0) at thread/qthread_unix.cpp:368
#9  0x0000003d416076ba in start_thread (arg=0x7f72b7fff700) at pthread_create.c:333
#10 0x0000003d40f073dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7f72bef13700 (LWP 9566)):
#0  0x0000003d40efb7d1 in __GI_ppoll (fds=fds@entry=0x7f72b800ef48, nfds=nfds@entry=1, timeout=<optimized out>, timeout@entry=0x0, sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:50
#1  0x00007f72c76e6dc1 in ppoll (__ss=<optimized out>, __timeout=<optimized out>, __nfds=<optimized out>, __fds=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/poll2.h:77
#2  qt_ppoll (timeout_ts=0x0, nfds=1, fds=0x7f72b800ef48) at kernel/qcore_unix.cpp:81
#3  qt_safe_poll (fds=0x7f72b800ef48, nfds=1, timeout_ts=timeout_ts@entry=0x0) at kernel/qcore_unix.cpp:102
#4  0x00007f72c76e8422 in QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:500
#5  0x00007f72c769530a in QEventLoop::exec (this=this@entry=0x7f72bef12c90, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#6  0x00007f72c74c4af4 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:515
#7  0x00007f72c63d3b75 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#8  0x00007f72c74c9509 in QThreadPrivate::start (arg=0x7f72c6449da0) at thread/qthread_unix.cpp:368
#9  0x0000003d416076ba in start_thread (arg=0x7f72bef13700) at pthread_create.c:333
#10 0x0000003d40f073dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7f72c4d64700 (LWP 9551)):
#0  0x0000003d40efb70d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x0000003d43609c62 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x0000003d4360b8d7 in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007f72c59f61f9 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007f72c74c9509 in QThreadPrivate::start (arg=0x1d3c430) at thread/qthread_unix.cpp:368
#5  0x0000003d416076ba in start_thread (arg=0x7f72c4d64700) at pthread_create.c:333
#6  0x0000003d40f073dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7f72c5ef8900 (LWP 9506)):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f72b656b945 in ?? () from /usr/lib/nvidia-378/libGLX_nvidia.so.0
#2  0x00007f72b656b643 in ?? () from /usr/lib/nvidia-378/libGLX_nvidia.so.0
#3  0x00007f72b56248ad in ?? () from /usr/lib/nvidia-378/libnvidia-glcore.so.378.13
#4  0x00007f72b551e0b1 in ?? () from /usr/lib/nvidia-378/libnvidia-glcore.so.378.13
#5  0x00007f72b51b1304 in ?? () from /usr/lib/nvidia-378/libnvidia-glcore.so.378.13
#6  0x00007f72c6458321 in KWin::checkGLError (txt=txt@entry=0x7f72c8bd6437 "Init") at /workspace/build/libkwineffects/kwinglutils.cpp:135
#7  0x00007f72c8af5920 in KWin::SceneOpenGL2::SceneOpenGL2 (this=0x1fe3070, backend=<optimized out>, parent=<optimized out>) at /workspace/build/scene_opengl.cpp:1015
#8  0x00007f72c8af5d26 in KWin::SceneOpenGL::createScene (parent=parent@entry=0x1dd4f70) at /workspace/build/scene_opengl.cpp:573
#9  0x00007f72c8acd1ff in KWin::Compositor::slotCompositingOptionsInitialized (this=this@entry=0x1dd4f70) at /workspace/build/composite.cpp:212
#10 0x00007f72c8acdbe0 in KWin::Compositor::setup (this=0x1dd4f70) at /workspace/build/composite.cpp:184
#11 0x00007f72c76c4109 in QObject::event (this=0x1dd4f70, e=<optimized out>) at kernel/qobject.cpp:1246
#12 0x00007f72c80043fc in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x1dd4f70, e=0x21496e0) at kernel/qapplication.cpp:3717
#13 0x00007f72c800be07 in QApplication::notify (this=0x7fffef8a6100, receiver=0x1dd4f70, e=0x21496e0) at kernel/qapplication.cpp:3476
#14 0x00007f72c7697128 in QCoreApplication::notifyInternal2 (receiver=0x1dd4f70, event=event@entry=0x21496e0) at kernel/qcoreapplication.cpp:1018
#15 0x00007f72c769962b in QCoreApplication::sendEvent (event=0x21496e0, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:233
#16 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x1d14ae0) at kernel/qcoreapplication.cpp:1678
#17 0x00007f72c76e8247 in QEventDispatcherUNIX::processEvents (this=0x1d71820, flags=...) at kernel/qeventdispatcher_unix.cpp:466
#18 0x00007f72c5a54e0d in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#19 0x00007f72c769530a in QEventLoop::exec (this=this@entry=0x7fffef8a5fe0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#20 0x00007f72c769ddb4 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1291
#21 0x00007f72c8e7d174 in kdemain (argc=1, argv=0x7fffef8a6298) at /workspace/build/main_x11.cpp:466
#22 0x0000003d40e20830 in __libc_start_main (main=0x400710 <main(int, char**)>, argc=1, argv=0x7fffef8a6298, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffef8a6288) at ../csu/libc-start.c:291
#23 0x0000000000400749 in _start ()

Possible duplicates by query: bug 377996, bug 374422, bug 368847, bug 364721, bug 364342.

Reported using DrKonqi
Comment 1 Martin Flöser 2017-06-28 19:35:42 UTC
This is a problem with the proprietary NVIDIA driver. The initialization of compositing takes too long and KWin has a mechanism to detect this and commits suicide. It's a mechanism implemented for the free NVIDIA driver, so I'm quite surprised to see this happen for the proprietary NVIDIA driver.

Anyway the fact that KWin crashes in this case is wanted (we trigger an abort in the suicide to get autorestarted by DrKonqi), so I set to UPSTREAM as we cannot do anything about the detected freeze in the proprietary driver.
Comment 2 Martin Flöser 2017-07-01 16:34:37 UTC
*** Bug 381870 has been marked as a duplicate of this bug. ***
Comment 3 Martin Flöser 2017-07-01 16:55:46 UTC
Due to getting a duplicate I did read up documentation again given that we introduced a change specific to NVIDIA in 5.10.3.

We introduced a potential freeze and thus this problem will now get highest priority.
Comment 4 Martin Flöser 2017-07-01 17:29:13 UTC
Untested patch at https://phabricator.kde.org/D6464
Comment 5 Martin Flöser 2017-07-02 10:01:46 UTC
*** Bug 381903 has been marked as a duplicate of this bug. ***
Comment 6 Martin Flöser 2017-07-03 04:27:27 UTC
*** Bug 381938 has been marked as a duplicate of this bug. ***
Comment 7 Martin Flöser 2017-07-03 04:28:25 UTC
*** Bug 381941 has been marked as a duplicate of this bug. ***
Comment 8 Martin Flöser 2017-07-03 15:58:07 UTC
I marked the wrong bug as fixed, so setting this one to duplicate

*** This bug has been marked as a duplicate of bug 381870 ***