Bug 368103 - Kwin crashes while changing number of screens
Summary: Kwin crashes while changing number of screens
Status: RESOLVED UPSTREAM
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: 5.6.5
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2016-09-01 12:49 UTC by Karel Kozlík
Modified: 2016-09-02 06:04 UTC (History)
0 users

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Karel Kozlík 2016-09-01 12:49:53 UTC
Application: kwin_x11 (5.6.5)

Qt Version: 5.5.1
Frameworks Version: 5.23.0
Operating System: Linux 4.4.0-36-generic x86_64
Distribution: Ubuntu 16.04.1 LTS

-- Information about the crash:
- What I was doing when the application crashed:

I have disabled the left most one of my monitors in screen settings dialog. When I have confirmed this change the kwin crashes.

-- Backtrace:
Application: KWin (kwin_x11), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fc58716d940 (LWP 16671))]

Thread 7 (Thread 0x7fc5548e1700 (LWP 17318)):
#0  0x00007fc586c55d13 in select () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fc58544210f in qt_safe_select (nfds=17, fdread=fdread@entry=0x7fc548000a78, fdwrite=fdwrite@entry=0x7fc548000d08, fdexcept=fdexcept@entry=0x7fc548000f98, orig_timeout=orig_timeout@entry=0x0) at kernel/qcore_unix.cpp:75
#2  0x00007fc585443c0e in QEventDispatcherUNIX::select (timeout=0x0, exceptfds=0x7fc548000f98, writefds=0x7fc548000d08, readfds=0x7fc548000a78, nfds=<optimized out>, this=0x7fc5480008c0) at kernel/qeventdispatcher_unix.cpp:320
#3  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7fc5480008e0, flags=..., flags@entry=..., timeout=timeout@entry=0x0) at kernel/qeventdispatcher_unix.cpp:196
#4  0x00007fc58544413e in QEventDispatcherUNIX::processEvents (this=0x7fc5480008c0, flags=...) at kernel/qeventdispatcher_unix.cpp:607
#5  0x00007fc5853eddea in QEventLoop::exec (this=this@entry=0x7fc5548e0c60, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007fc58520a8a4 in QThread::exec (this=this@entry=0x5167040) at thread/qthread.cpp:503
#7  0x00007fc57faca3c5 in QQmlThreadPrivate::run (this=0x5167040) at qml/ftw/qqmlthread.cpp:141
#8  0x00007fc58520f84e in QThreadPrivate::start (arg=0x5167040) at thread/qthread_unix.cpp:331
#9  0x00007fc58096e6fa in start_thread (arg=0x7fc5548e1700) at pthread_create.c:333
#10 0x00007fc586c5fb5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 6 (Thread 0x7fc567fff700 (LWP 16737)):
#0  0x00007fc586c6dfda in __GI___clock_gettime (clock_id=<optimized out>, tp=tp@entry=0x7fc567ffea20) at ../sysdeps/unix/clock_gettime.c:134
#1  0x00007fc5852bfc16 in qt_clock_gettime (ts=0x7fc567ffea20, clock=<optimized out>) at tools/qelapsedtimer_unix.cpp:105
#2  do_gettime (frac=<synthetic pointer>, sec=<synthetic pointer>) at tools/qelapsedtimer_unix.cpp:156
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:165
#4  0x00007fc585444529 in QTimerInfoList::updateCurrentTime (this=this@entry=0x7fc560001118) at kernel/qtimerinfo_unix.cpp:84
#5  0x00007fc58544390b in QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7fc5600008e0, flags=..., flags@entry=..., timeout=timeout@entry=0x0) at kernel/qeventdispatcher_unix.cpp:171
#6  0x00007fc58544413e in QEventDispatcherUNIX::processEvents (this=0x7fc5600008c0, flags=...) at kernel/qeventdispatcher_unix.cpp:607
#7  0x00007fc5853eddea in QEventLoop::exec (this=this@entry=0x7fc567ffec60, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#8  0x00007fc58520a8a4 in QThread::exec (this=this@entry=0x3b64120) at thread/qthread.cpp:503
#9  0x00007fc57faca3c5 in QQmlThreadPrivate::run (this=0x3b64120) at qml/ftw/qqmlthread.cpp:141
#10 0x00007fc58520f84e in QThreadPrivate::start (arg=0x3b64120) at thread/qthread_unix.cpp:331
#11 0x00007fc58096e6fa in start_thread (arg=0x7fc567fff700) at pthread_create.c:333
#12 0x00007fc586c5fb5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 5 (Thread 0x7fc54ffff700 (LWP 16680)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007fc584393bd4 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Script.so.5
#2  0x00007fc584393c19 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Script.so.5
#3  0x00007fc58096e6fa in start_thread (arg=0x7fc54ffff700) at pthread_create.c:333
#4  0x00007fc586c5fb5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 4 (Thread 0x7fc556b18700 (LWP 16678)):
#0  0x00007fc586c55d13 in select () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fc58544210f in qt_safe_select (nfds=16, fdread=fdread@entry=0x7fc550000a78, fdwrite=fdwrite@entry=0x7fc550000d08, fdexcept=fdexcept@entry=0x7fc550000f98, orig_timeout=orig_timeout@entry=0x0) at kernel/qcore_unix.cpp:75
#2  0x00007fc585443c0e in QEventDispatcherUNIX::select (timeout=0x0, exceptfds=0x7fc550000f98, writefds=0x7fc550000d08, readfds=0x7fc550000a78, nfds=<optimized out>, this=0x7fc5500008c0) at kernel/qeventdispatcher_unix.cpp:320
#3  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7fc5500008e0, flags=..., flags@entry=..., timeout=timeout@entry=0x0) at kernel/qeventdispatcher_unix.cpp:196
#4  0x00007fc58544413e in QEventDispatcherUNIX::processEvents (this=0x7fc5500008c0, flags=...) at kernel/qeventdispatcher_unix.cpp:607
#5  0x00007fc5853eddea in QEventLoop::exec (this=this@entry=0x7fc556b17c60, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007fc58520a8a4 in QThread::exec (this=this@entry=0x24ce380) at thread/qthread.cpp:503
#7  0x00007fc57faca3c5 in QQmlThreadPrivate::run (this=0x24ce380) at qml/ftw/qqmlthread.cpp:141
#8  0x00007fc58520f84e in QThreadPrivate::start (arg=0x24ce380) at thread/qthread_unix.cpp:331
#9  0x00007fc58096e6fa in start_thread (arg=0x7fc556b18700) at pthread_create.c:333
#10 0x00007fc586c5fb5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7fc5677fe700 (LWP 16677)):
#0  0x00007fc586c55d13 in select () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fc58544210f in qt_safe_select (nfds=14, fdread=fdread@entry=0x7fc558000a78, fdwrite=fdwrite@entry=0x7fc558000d08, fdexcept=fdexcept@entry=0x7fc558000f98, orig_timeout=orig_timeout@entry=0x0) at kernel/qcore_unix.cpp:75
#2  0x00007fc585443c0e in QEventDispatcherUNIX::select (timeout=0x0, exceptfds=0x7fc558000f98, writefds=0x7fc558000d08, readfds=0x7fc558000a78, nfds=<optimized out>, this=0x7fc5580008c0) at kernel/qeventdispatcher_unix.cpp:320
#3  QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x7fc5580008e0, flags=..., flags@entry=..., timeout=timeout@entry=0x0) at kernel/qeventdispatcher_unix.cpp:196
#4  0x00007fc58544413e in QEventDispatcherUNIX::processEvents (this=0x7fc5580008c0, flags=...) at kernel/qeventdispatcher_unix.cpp:607
#5  0x00007fc5853eddea in QEventLoop::exec (this=this@entry=0x7fc5677fdc60, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007fc58520a8a4 in QThread::exec (this=this@entry=0x19d9f10) at thread/qthread.cpp:503
#7  0x00007fc57faca3c5 in QQmlThreadPrivate::run (this=0x19d9f10) at qml/ftw/qqmlthread.cpp:141
#8  0x00007fc58520f84e in QThreadPrivate::start (arg=0x19d9f10) at thread/qthread_unix.cpp:331
#9  0x00007fc58096e6fa in start_thread (arg=0x7fc5677fe700) at pthread_create.c:333
#10 0x00007fc586c5fb5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7fc56f4b9700 (LWP 16674)):
#0  0x00007fc586c53e8d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fc584f51c62 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007fc584f538d7 in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007fc56ff6e629 in QXcbEventReader::run (this=0x17536d0) at qxcbconnection.cpp:1253
#4  0x00007fc58520f84e in QThreadPrivate::start (arg=0x17536d0) at thread/qthread_unix.cpp:331
#5  0x00007fc58096e6fa in start_thread (arg=0x7fc56f4b9700) at pthread_create.c:333
#6  0x00007fc586c5fb5d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7fc58716d940 (LWP 16671)):
[KCrash Handler]
#6  0x00007fc585757c2b in QScreen::devicePixelRatio (this=<optimized out>) at kernel/qscreen.cpp:261
#7  0x00007fc57ff95dbe in qsg_device_pixel_ratio (ctx=0x4e65070) at scenegraph/qsgdefaultglyphnode_p.cpp:76
#8  QSGTextMaskMaterial::init (this=this@entry=0x398d930, glyphFormat=glyphFormat@entry=QFontEngine::Format_A8) at scenegraph/qsgdefaultglyphnode_p.cpp:410
#9  0x00007fc57ff9604b in QSGTextMaskMaterial::QSGTextMaskMaterial (this=this@entry=0x398d930, font=..., glyphFormat=glyphFormat@entry=QFontEngine::Format_A8) at scenegraph/qsgdefaultglyphnode_p.cpp:379
#10 0x00007fc57ff96bbe in QSGStyledTextMaterial::QSGStyledTextMaterial (this=0x398d930, font=...) at scenegraph/qsgdefaultglyphnode_p.cpp:602
#11 0x00007fc57ff94acd in QSGDefaultGlyphNode::update (this=0x3999fe0) at scenegraph/qsgdefaultglyphnode.cpp:105
#12 0x00007fc58001e677 in QQuickTextNode::addGlyphs (this=this@entry=0x56f6ed0, position=..., glyphs=..., color=..., style=style@entry=QQuickText::Raised, styleColor=..., parentNode=0x0) at items/qquicktextnode.cpp:153
#13 0x00007fc580022a9c in QQuickTextNodeEngine::addToSceneGraph (this=0x3588960, parentNode=parentNode@entry=0x56f6ed0, style=style@entry=QQuickText::Raised, styleColor=...) at items/qquicktextnodeengine.cpp:767
#14 0x00007fc58001f547 in QQuickTextNode::addTextLayout (this=this@entry=0x56f6ed0, position=..., textLayout=textLayout@entry=0x4dcbc50, color=..., style=QQuickText::Raised, styleColor=..., anchorColor=..., selectionColor=..., selectedTextColor=..., selectionStart=-1, selectionEnd=-1, lineStart=0, lineCount=1) at items/qquicktextnode.cpp:304
#15 0x00007fc58001dcb8 in QQuickText::updatePaintNode (this=0x3fea090, oldNode=<optimized out>, data=<optimized out>) at items/qquicktext.cpp:2313
#16 0x00007fc57ffdc2d8 in QQuickWindowPrivate::updateDirtyNode (this=this@entry=0x5742300, item=item@entry=0x3fea090) at items/qquickwindow.cpp:2984
#17 0x00007fc57ffdcb4b in QQuickWindowPrivate::updateDirtyNodes (this=this@entry=0x5742300) at items/qquickwindow.cpp:2722
#18 0x00007fc57ffdccc0 in QQuickWindowPrivate::syncSceneGraph (this=0x5742300) at items/qquickwindow.cpp:341
#19 0x00007fc5800bb4fa in QQuickRenderControl::sync (this=<optimized out>) at items/qquickrendercontrol.cpp:256
#20 0x00007fc56c2d131a in Aurorae::Decoration::<lambda()>::operator() (__closure=<synthetic pointer>) at /build/kwin-5IHWGx/kwin-5.6.5/clients/aurorae/src/aurorae.cpp:362
#21 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, Aurorae::Decoration::init()::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:495
#22 QtPrivate::Functor<Aurorae::Decoration::init()::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:552
#23 QtPrivate::QFunctorSlotObject<Aurorae::Decoration::init()::<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:192
#24 0x00007fc58541ee4f in QtPrivate::QSlotObjectBase::call (a=0x7ffe6abc4030, r=0x3fea310, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:124
#25 QMetaObject::activate (sender=sender@entry=0x56f1aa0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3698
#26 0x00007fc58541f7d7 in QMetaObject::activate (sender=sender@entry=0x56f1aa0, m=m@entry=0x7fc585639840 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3578
#27 0x00007fc58549e6d0 in QTimer::timeout (this=this@entry=0x56f1aa0) at .moc/moc_qtimer.cpp:197
#28 0x00007fc58542b878 in QTimer::timerEvent (this=0x56f1aa0, e=<optimized out>) at kernel/qtimer.cpp:247
#29 0x00007fc58541fe53 in QObject::event (this=0x56f1aa0, e=<optimized out>) at kernel/qobject.cpp:1261
#30 0x00007fc585ce305c in QApplicationPrivate::notify_helper (this=this@entry=0x1740260, receiver=receiver@entry=0x56f1aa0, e=e@entry=0x7ffe6abc4360) at kernel/qapplication.cpp:3716
#31 0x00007fc585ce8516 in QApplication::notify (this=0x7ffe6abc45c0, receiver=0x56f1aa0, e=0x7ffe6abc4360) at kernel/qapplication.cpp:3499
#32 0x00007fc5853f062b in QCoreApplication::notifyInternal (this=0x7ffe6abc45c0, receiver=0x56f1aa0, event=event@entry=0x7ffe6abc4360) at kernel/qcoreapplication.cpp:965
#33 0x00007fc58544589d in QCoreApplication::sendEvent (event=0x7ffe6abc4360, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:224
#34 QTimerInfoList::activateTimers (this=0x178ed78) at kernel/qtimerinfo_unix.cpp:637
#35 0x00007fc585443640 in QEventDispatcherUNIX::activateTimers (this=this@entry=0x1730380) at kernel/qeventdispatcher_unix.cpp:549
#36 0x00007fc5854440b6 in QEventDispatcherUNIX::processEvents (this=0x1730380, flags=flags@entry=...) at kernel/qeventdispatcher_unix.cpp:611
#37 0x00007fc56ffd54ed in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...) at eventdispatchers/qunixeventdispatcher.cpp:62
#38 0x00007fc5853eddea in QEventLoop::exec (this=this@entry=0x7ffe6abc44b0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#39 0x00007fc5853f5e8c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1229
#40 0x00007fc585729c3c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1542
#41 0x00007fc585cdf495 in QApplication::exec () at kernel/qapplication.cpp:2976
#42 0x00007fc586f278df in kdemain (argc=3, argv=0x7ffe6abc4748) at /build/kwin-5IHWGx/kwin-5.6.5/main_x11.cpp:327
#43 0x00007fc586b79830 in __libc_start_main (main=0x400730 <main(int, char**)>, argc=3, argv=0x7ffe6abc4748, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe6abc4738) at ../csu/libc-start.c:291
#44 0x0000000000400769 in _start ()

Reported using DrKonqi
Comment 1 Martin Flöser 2016-09-02 06:04:41 UTC
Unfortunately the crash is deep down in Qt and there is nothing we can do about that :-(

As a workaround you can use the Breeze window decoration as that one won't go into this specific code path, but in general I cannot give a guarantee that it won't crash nevertheless - Qt is really crashy on screen changes.