Summary: | Krunner crashes when connecting/disconnecting second monitor. | ||
---|---|---|---|
Product: | [Plasma] krunner | Reporter: | Mateusz <matt.drzazga> |
Component: | general | Assignee: | Vishesh Handa <me> |
Status: | RESOLVED UPSTREAM | ||
Severity: | crash | CC: | bhush94, bugs.kde.1933, donothingloop, i.proudler, i1421241, jetrull, kde, matt, mmar, okurz, plasma-bugs, sconetto.joao, westjgames |
Priority: | NOR | Keywords: | drkonqi |
Version: | 5.3.2 | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Mateusz
2015-10-16 18:16:38 UTC
I'm also experiencing this bug, when I switch from my laptop display to the external display connected to my Lenovo OneLink docking station over DVI. I am also experiencing this bug. I have desktop with one display connected via DVI and another connected via DisplayPort. When the one with DP turns off, the bug occurs. The crash can be reproduced most of the time. Same problem here with identical backtrace (the one in Thread 1) on Kubuntu 15.10. The machine is a Lenovo ThinkPad T440s. To reproduce (not reliably): - Connect second monitor (T440s has VGA and mini DP, problem occurs with both) - Go to system settings → Display and monitor - Disable the laptop display, click 'apply' My C++ foo is limited, but I believe this is the relevant part of the backtrace: #10 0x00007f53b3e02f31 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #11 0x00007f53b3e03a7f in __cxa_pure_virtual () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #12 0x00007f53b46ce96a in QPlatformScreen::physicalSize (this=<optimized out>) at kernel/qplatformscreen.cpp:131 #13 0x00007f53b47087b2 in QScreen::physicalSize (this=this@entry=0x26bd450) at kernel/qscreen.cpp:245 #14 0x00007f53b4708869 in QScreen::physicalDotsPerInch (this=0x26bd450) at kernel/qscreen.cpp:168 #15 0x00007f53b8d97c49 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 #16 0x00007f53b43c59c9 in QMetaObject::activate (sender=sender@entry=0x289a100, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffcd4ccd7d0) at kernel/qobject.cpp:3716 and #27 0x00007f53b4708679 in QScreen::~QScreen (this=0x26bd450, __in_chrg=<optimized out>) at kernel/qscreen.cpp:77 #28 0x00007f53b46cef2a in QPlatformScreen::~QPlatformScreen (this=0x26bd1f0, __in_chrg=<optimized out>) at kernel/qplatformscreen.cpp:57 #29 0x00007f53a6cde769 in QXcbScreen::~QXcbScreen (this=0x26bd1f0, __in_chrg=<optimized out>) at qxcbscreen.cpp:222 QPlatformScreen::physicalSize is a pure virtual function. __cxa_pure_virtual is an error handler that gets called when a pure virtual function is called. I think this is what happens: - QXcbScreen destructor is called (#29) - which in turn calls QScreen destructor (#28) - which in turn calls QPlatformScreen destructor (#27) - which somehow triggers that a signal is emitted - that signal then ends up being received by the QXcbScreen instance, which is already destroyed This could also explain the question marks in frame #15. This may be related: I have two monitors permanently connect. Recently (kubuntu 15.10) I have been having problems where the main panel freezes. The icons are present but nothing happens when you click on them. I have discovered that this can be rectified if I disable one of the monitors and then re-enable it. In doing so krunner crashes. The KDE bug reporting app does not work. It will not let me select a related bug. The saved back trace is: Application: krunner (0.1) Qt Version: 5.4.2 Operating System: Linux 4.2.0-21-generic x86_64 Distribution: Ubuntu 15.10 -- Information about the crash: <In detail, tell us what you were doing when the application crashed.> -- Backtrace: Application: krunner (krunner), signal: Aborted Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [Current thread is 1 (Thread 0x7f455d8be800 (LWP 1736))] Thread 3 (Thread 0x7f4549d17700 (LWP 1741)): #0 0x00007f455a3838dd in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x00007f4559875bd2 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1 #2 0x00007f455987774f in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1 #3 0x00007f454c061a39 in QXcbEventReader::run (this=0x1bbd6b0) at qxcbconnection.cpp:1105 #4 0x00007f455aa762be in QThreadPrivate::start (arg=0x1bbd6b0) at thread/qthread_unix.cpp:337 #5 0x00007f45585e26aa in start_thread (arg=0x7f4549d17700) at pthread_create.c:333 #6 0x00007f455a38eeed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 2 (Thread 0x7f453f69d700 (LWP 1763)): #0 0x00007f455a3838dd in poll () at ../sysdeps/unix/syscall-template.S:81 #1 0x00007f4557a631ec in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #2 0x00007f4557a632fc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #3 0x00007f455acad29b in QEventDispatcherGlib::processEvents (this=0x7f45380008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:420 #4 0x00007f455ac5375a in QEventLoop::exec (this=this@entry=0x7f453f69cda0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #5 0x00007f455aa713d4 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:503 #6 0x00007f455c878f85 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5 #7 0x00007f455aa762be in QThreadPrivate::start (arg=0x1f1acc0) at thread/qthread_unix.cpp:337 #8 0x00007f45585e26aa in start_thread (arg=0x7f453f69d700) at pthread_create.c:333 #9 0x00007f455a38eeed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 Thread 1 (Thread 0x7f455d8be800 (LWP 1736)): [KCrash Handler] #6 0x00007f455a2bd267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55 #7 0x00007f455a2beeca in __GI_abort () at abort.c:89 #8 0x00007f455a6e1b7d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #9 0x00007f455a6df9c6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #10 0x00007f455a6dfa11 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #11 0x00007f455a6e055f in __cxa_pure_virtual () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #12 0x00007f455af657ca in QPlatformScreen::physicalSize (this=<optimized out>) at kernel/qplatformscreen.cpp:131 #13 0x00007f455af9e212 in QScreen::physicalSize (this=this@entry=0x1bc09f0) at kernel/qscreen.cpp:245 #14 0x00007f455af9e2c9 in QScreen::physicalDotsPerInch (this=0x1bc09f0) at kernel/qscreen.cpp:168 #15 0x00007f455ce5db6b in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 #16 0x00007f455ac8678a in QMetaObject::activate (sender=sender@entry=0x7fff1b9999b0, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff1b998d00) at kernel/qobject.cpp:3717 #17 0x00007f455ac86f87 in QMetaObject::activate (sender=sender@entry=0x7fff1b9999b0, m=m@entry=0x7f455b3b6580 <QWindow::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff1b998d00) at kernel/qobject.cpp:3582 #18 0x00007f455af7bdbf in QWindow::screenChanged (this=this@entry=0x7fff1b9999b0, _t1=_t1@entry=0x1bc0020) at .moc/moc_qwindow.cpp:626 #19 0x00007f455af7ccb5 in QWindowPrivate::emitScreenChangedRecursion (this=this@entry=0x1c0fee0, newScreen=newScreen@entry=0x1bc0020) at kernel/qwindow.cpp:366 #20 0x00007f455af7fcf3 in QWindowPrivate::setTopLevelScreen (this=0x1c0fee0, newScreen=0x1bc0020, recreate=<optimized out>) at kernel/qwindow.cpp:387 #21 0x0000000000407fe0 in ?? () #22 0x00007f455ac86617 in QtPrivate::QSlotObjectBase::call (a=0x7fff1b998f50, r=0x7fff1b9999b0, this=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobject_impl.h:124 #23 QMetaObject::activate (sender=0x7fff1b999940, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fff1b998f50) at kernel/qobject.cpp:3702 #24 0x00007f455ac86f87 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7f455b3b6320 <QGuiApplication::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7fff1b998f50) at kernel/qobject.cpp:3582 #25 0x00007f455af6e942 in QGuiApplication::screenRemoved (this=<optimized out>, _t1=_t1@entry=0x1bc09f0) at .moc/moc_qguiapplication.cpp:328 #26 0x00007f455af9e0a9 in QScreen::~QScreen (this=0x1bc09f0, __in_chrg=<optimized out>) at kernel/qscreen.cpp:76 #27 0x00007f455af9e0c9 in QScreen::~QScreen (this=0x1bc09f0, __in_chrg=<optimized out>) at kernel/qscreen.cpp:77 #28 0x00007f455af65d49 in QPlatformScreen::~QPlatformScreen (this=0x1bbfea0, __in_chrg=<optimized out>) at kernel/qplatformscreen.cpp:57 #29 0x00007f454c06f519 in QXcbScreen::~QXcbScreen (this=0x1bbfea0, __in_chrg=<optimized out>) at qxcbscreen.cpp:222 #30 0x00007f454c062909 in QXcbConnection::updateScreens (this=this@entry=0x1bb1870) at qxcbconnection.cpp:286 #31 0x00007f454c0635c6 in QXcbConnection::handleXcbEvent (this=this@entry=0x1bb1870, event=event@entry=0x7f4544007d20) at qxcbconnection.cpp:961 #32 0x00007f454c0643b3 in QXcbConnection::processXcbEvents (this=0x1bb1870) at qxcbconnection.cpp:1303 #33 0x00007f455ac87651 in QObject::event (this=0x1bb1870, e=<optimized out>) at kernel/qobject.cpp:1245 #34 0x00007f455b7a8b8c in QApplicationPrivate::notify_helper (this=this@entry=0x1ba6180, receiver=receiver@entry=0x1bb1870, e=e@entry=0x7f4544003420) at kernel/qapplication.cpp:3720 #35 0x00007f455b7ae230 in QApplication::notify (this=0x7fff1b999940, receiver=0x1bb1870, e=0x7f4544003420) at kernel/qapplication.cpp:3503 #36 0x00007f455ac55f1b in QCoreApplication::notifyInternal (this=0x7fff1b999940, receiver=0x1bb1870, event=event@entry=0x7f4544003420) at kernel/qcoreapplication.cpp:935 #37 0x00007f455ac58057 in QCoreApplication::sendEvent (event=0x7f4544003420, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228 #38 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x1ba2080) at kernel/qcoreapplication.cpp:1552 #39 0x00007f455ac58588 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1410 #40 0x00007f455acace73 in postEventSourceDispatch (s=0x1bdddf0) at kernel/qeventdispatcher_glib.cpp:271 #41 0x00007f4557a62ff7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #42 0x00007f4557a63250 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #43 0x00007f4557a632fc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #44 0x00007f455acad27f in QEventDispatcherGlib::processEvents (this=0x1bdddd0, flags=...) at kernel/qeventdispatcher_glib.cpp:418 #45 0x00007f455ac5375a in QEventLoop::exec (this=this@entry=0x7fff1b999870, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204 #46 0x00007f455ac5b2cc in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188 #47 0x0000000000407b89 in main () Possible duplicates by query: bug 353977, bug 350333, bug 344336. I have this too, with similar stack trace. Can we mark it "confirmed"? Bug in Qt. New releases should have fixes. Would you mind posting that upstream bug report? Would be nice to track it. Thanks! Still a problem in Kubuntu 15.10 (KDE 5.15.0/Qt 5.4.2) |