Bug 359539

Summary: Plasma frequently crashes with new installation
Product: [Plasma] plasmashell Reporter: webegood
Component: generalAssignee: David Edmundson <kde>
Status: RESOLVED FIXED    
Severity: crash CC: bhush94, nowrep, plasma-bugs
Priority: NOR Keywords: drkonqi
Version: 5.4.3   
Target Milestone: 1.0   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description webegood 2016-02-18 14:55:33 UTC
Application: plasmashell (5.4.3)

Qt Version: 5.5.1
Operating System: Linux 4.1.15-8-default x86_64
Distribution: "openSUSE Leap 42.1 (x86_64)"

-- Information about the crash:
- What I was doing when the application crashed: Nothing in particular, just using the KDE Plasma desktop. The Plasma crashing has occured regularly since I freshly installed opensuse.

The crash can be reproduced every time.

-- Backtrace:
Application: Plasma (plasmashell), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f426a5a2800 (LWP 1698))]

Thread 14 (Thread 0x7f4252760700 (LWP 1700)):
#0  0x00007f4263ae9c1d in poll () at /lib64/libc.so.6
#1  0x00007f4268a15422 in  () at /usr/lib64/libxcb.so.1
#2  0x00007f4268a1700f in xcb_wait_for_event () at /usr/lib64/libxcb.so.1
#3  0x00007f4254ee33c9 in  () at /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 13 (Thread 0x7f4247cc8700 (LWP 1716)):
#0  0x00007f4263ae9c1d in poll () at /lib64/libc.so.6
#1  0x00007f42601cbe64 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f42601cbf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f4264413d8b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f42643bad53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42641dc61a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f42674c7df8 in  () at /usr/lib64/libQt5Qml.so.5
#7  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 12 (Thread 0x7f423c112700 (LWP 1727)):
#0  0x00007f4263ae9c1d in poll () at /lib64/libc.so.6
#1  0x00007f42601cbe64 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f42601cbf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f4264413d8b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f42643bad53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42641dc61a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f42674c7df8 in  () at /usr/lib64/libQt5Qml.so.5
#7  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 11 (Thread 0x7f423a77e700 (LWP 1738)):
#0  0x00007f4263ae5ced in read () at /lib64/libc.so.6
#1  0x00007f425bca3f75 in  () at /usr/lib64/tls/libnvidia-tls.so.352.79
#2  0x00007f426020cb60 in  () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f42601cb999 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f42601cbdf8 in  () at /usr/lib64/libglib-2.0.so.0
#5  0x00007f42601cbf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#6  0x00007f4264413d8b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#7  0x00007f42643bad53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#8  0x00007f42641dc61a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#9  0x00007f42674c7df8 in  () at /usr/lib64/libQt5Qml.so.5
#10 0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#11 0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#12 0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 10 (Thread 0x7f4238e5a700 (LWP 1750)):
#0  0x00007f4263ae5ced in read () at /lib64/libc.so.6
#1  0x00007f425bca3f75 in  () at /usr/lib64/tls/libnvidia-tls.so.352.79
#2  0x00007f426020cb60 in  () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f42601cb999 in g_main_context_check () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f42601cbdf8 in  () at /usr/lib64/libglib-2.0.so.0
#5  0x00007f42601cbf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#6  0x00007f4264413d8b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#7  0x00007f42643bad53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#8  0x00007f42641dc61a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#9  0x00007f42674c7df8 in  () at /usr/lib64/libQt5Qml.so.5
#10 0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#11 0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#12 0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 9 (Thread 0x7f422b505700 (LWP 1818)):
#0  0x00007f42632f705f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f4269c7c86b in  () at /usr/lib64/libQt5Script.so.5
#2  0x00007f4269c7c899 in  () at /usr/lib64/libQt5Script.so.5
#3  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#4  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 8 (Thread 0x7f41a8e61700 (LWP 1938)):
#0  0x00007f42601c9241 in  () at /usr/lib64/libglib-2.0.so.0
#1  0x00007f42601cb44b in g_main_context_prepare () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f42601cbd80 in  () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f42601cbf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#4  0x00007f4264413d8b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42643bad53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#6  0x00007f42641dc61a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#7  0x00007f426805c282 in  () at /usr/lib64/libQt5Quick.so.5
#8  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#9  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#10 0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 7 (Thread 0x7f41a3815700 (LWP 1945)):
#0  0x00007f42632f705f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f42641e234b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f42680cf25b in  () at /usr/lib64/libQt5Quick.so.5
#3  0x00007f42680cf6f3 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 6 (Thread 0x7f4192b2d700 (LWP 2013)):
#0  0x00007f4263ae9c1d in poll () at /lib64/libc.so.6
#1  0x00007f42601cbe64 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007f42601cbf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007f4264413d8b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007f42643bad53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42641dc61a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007f4193f56cf7 in KCupsConnection::run() () at /usr/lib64/libkcupslib.so
#7  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#9  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 5 (Thread 0x7f41916b0700 (LWP 2018)):
[KCrash Handler]
#6  0x00007f4265e6e88e in KConfig::name() const () at /usr/lib64/libKF5ConfigCore.so.5
#7  0x00007f4265e8bd19 in KSharedConfig::openConfig(QString const&, QFlags<KConfig::OpenFlag>, QStandardPaths::StandardLocation) () at /usr/lib64/libKF5ConfigCore.so.5
#8  0x00007f42687db027 in  () at /usr/lib64/libKF5Plasma.so.5
#9  0x00007f42687d6ea6 in Plasma::Theme::findInRectsCache(QString const&, QString const&, QRectF&) const () at /usr/lib64/libKF5Plasma.so.5
#10 0x00007f42687cfbce in  () at /usr/lib64/libKF5Plasma.so.5
#11 0x00007f42687d01d0 in Plasma::Svg::hasElement(QString const&) const () at /usr/lib64/libKF5Plasma.so.5
#12 0x00007f42687bfc21 in Plasma::FrameSvg::hasElementPrefix(QString const&) const () at /usr/lib64/libKF5Plasma.so.5
#13 0x00007f42465b3ff1 in  () at /usr/lib64/qt5/qml/org/kde/plasma/core/libcorebindingsplugin.so
#14 0x00007f42680f9c27 in QQuickWindowPrivate::updateDirtyNode(QQuickItem*) () at /usr/lib64/libQt5Quick.so.5
#15 0x00007f42680fa68c in QQuickWindowPrivate::updateDirtyNodes() () at /usr/lib64/libQt5Quick.so.5
#16 0x00007f42680fa7d0 in QQuickWindowPrivate::syncSceneGraph() () at /usr/lib64/libQt5Quick.so.5
#17 0x00007f42680ccff0 in  () at /usr/lib64/libQt5Quick.so.5
#18 0x00007f42680ce207 in  () at /usr/lib64/libQt5Quick.so.5
#19 0x00007f42680cf5cc in  () at /usr/lib64/libQt5Quick.so.5
#20 0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#21 0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#22 0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 4 (Thread 0x7f416bffe700 (LWP 2034)):
#0  0x00007f42632f705f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f42641e234b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f42680cf25b in  () at /usr/lib64/libQt5Quick.so.5
#3  0x00007f42680cf6f3 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 3 (Thread 0x7f41779a3700 (LWP 2297)):
#0  0x00007f42632f705f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f42641e234b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f42680cf25b in  () at /usr/lib64/libQt5Quick.so.5
#3  0x00007f42680cf6f3 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f4174f91700 (LWP 2299)):
#0  0x00007f42632f705f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f42641e234b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f42680cf25b in  () at /usr/lib64/libQt5Quick.so.5
#3  0x00007f42680cf6f3 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007f42641e132f in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007f42632f30a4 in start_thread () at /lib64/libpthread.so.0
#6  0x00007f4263af204d in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f426a5a2800 (LWP 1698)):
#0  0x00007f42632f705f in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f42641e234b in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#2  0x00007f42680d0b0e in  () at /usr/lib64/libQt5Quick.so.5
#3  0x00007f42680d14aa in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007f4268104147 in QQuickWindow::event(QEvent*) () at /usr/lib64/libQt5Quick.so.5
#5  0x000000000044677b in PanelView::event(QEvent*) ()
#6  0x00007f4265735e7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#7  0x00007f426573acc8 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#8  0x00007f42643bce95 in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#9  0x00007f4264916940 in QWindowPrivate::deliverUpdateRequest() () at /usr/lib64/libQt5Gui.so.5
#10 0x00007f4264916d49 in QWindow::event(QEvent*) () at /usr/lib64/libQt5Gui.so.5
#11 0x00007f4268104161 in QQuickWindow::event(QEvent*) () at /usr/lib64/libQt5Quick.so.5
#12 0x000000000044677b in PanelView::event(QEvent*) ()
#13 0x00007f4265735e7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#14 0x00007f426573acc8 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#15 0x00007f42643bce95 in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#16 0x00007f426441377d in QTimerInfoList::activateTimers() () at /usr/lib64/libQt5Core.so.5
#17 0x00007f4264413aa1 in  () at /usr/lib64/libQt5Core.so.5
#18 0x00007f42601cbc84 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#19 0x00007f42601cbed8 in  () at /usr/lib64/libglib-2.0.so.0
#20 0x00007f42601cbf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#21 0x00007f4264413d6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#22 0x00007f42643bad53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#23 0x00007f42643c28f6 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#24 0x000000000043467b in main ()

Reported using DrKonqi
Comment 1 David Rosca 2016-02-19 10:24:10 UTC
I can't reproduce it, but I think I can see how this can happen.

The issue is that KSharedConfig is created and removed on different thread, which it can't handle (it holds raw pointers in per-thread storage). It gets created on scene graph thread (as seen from backtrace), but then may be removed from main thread (from ThemePrivate::notifyOfChanged slot).

So is plasma-framework using it incorrectly, or should KSharedConfig handle this case?
Comment 2 David Rosca 2016-02-19 11:39:31 UTC
Can you try this patch https://git.reviewboard.kde.org/r/127112/ ?
Comment 3 David Rosca 2016-02-19 12:27:46 UTC
Git commit a8e54e15e13653290ca4a49a38fae742e3825d04 by David Rosca.
Committed on 19/02/2016 at 12:25.
Pushed by drosca into branch 'master'.

Reparse svgElementsCache instead of deleting it in discardCache

svgElementsCache may be created on render thread and deleted
on main thread, which will make KSharedConfig crash because
it uses per-thread storage.
REVIEW: 127112

M  +1    -1    src/plasma/private/theme_p.cpp

http://commits.kde.org/plasma-framework/a8e54e15e13653290ca4a49a38fae742e3825d04