Bug 344032

Summary: plasmashell gets stuck in Plasma::ThemePrivate::saveSvgElementsCache if plasma-svgelements-default_v0.9.7.lock file is present
Product: [Frameworks and Libraries] libplasma Reporter: Bhushan Shah <bhush94>
Component: libplasmaAssignee: Marco Martin <notmart>
Status: RESOLVED FIXED    
Severity: normal CC: ghost53947, simonandric5
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Bhushan Shah 2015-02-11 12:17:22 UTC
1) touch ~/.cache/plasma-svgelements-default_v0.9.7.lock
2) restart plasmashell
3) after sometime plasmashell gets stuck

I agree that lockfile should not be present but if it is present things should not hang like it is being currently. backtrace below

Thread 1 (Thread 0x7f10a312d780 (LWP 12011)):
#0  0x00007f109df7861d in nanosleep () from /usr/lib/libc.so.6
#1  0x00007f109e6cb1ad in ?? () from /usr/lib/libQt5Core.so.5
#2  0x00007f109e6159d8 in QThread::msleep(unsigned long) () from /usr/lib/libQt5Core.so.5
#3  0x00007f109e727340 in QLockFile::tryLock(int) () from /usr/lib/libQt5Core.so.5
#4  0x00007f109f863bb2 in KConfigIniBackend::lock (this=0x1bc4d90) at /home/bshah/aur/kconfig-git/src/kconfig/src/core/kconfigini.cpp:634
#5  0x00007f109f84c4d0 in lockLocal (this=<optimized out>) at /home/bshah/aur/kconfig-git/src/kconfig/src/core/kconfig.cpp:104
#6  KConfig::sync (this=<optimized out>) at /home/bshah/aur/kconfig-git/src/kconfig/src/core/kconfig.cpp:415
#7  0x00007f10a1b6d48a in Plasma::ThemePrivate::saveSvgElementsCache (this=<optimized out>) at /home/bshah/aur/plasma-framework-git/src/plasma-framework/src/plasma/private/theme_p.cpp:536
#8  0x00007f10a1b74cee in Plasma::ThemePrivate::qt_static_metacall (_o=0x1ad44a0, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/bshah/aur/plasma-framework-git/src/build/src/plasma/moc_theme_p.cpp:127
#9  0x00007f109e830339 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#10 0x00007f109e83e0a8 in QTimer::timerEvent(QTimerEvent*) () from /usr/lib/libQt5Core.so.5
#11 0x00007f109e831473 in QObject::event(QEvent*) () from /usr/lib/libQt5Core.so.5
#12 0x00007f109f2f0d8c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#13 0x00007f109f2f6370 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#14 0x00007f109e800a9b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#15 0x00007f109e856f6d in QTimerInfoList::activateTimers() () from /usr/lib/libQt5Core.so.5
#16 0x00007f109e8573b1 in ?? () from /usr/lib/libQt5Core.so.5
#17 0x00007f109ab16a0d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#18 0x00007f109ab16cf8 in ?? () from /usr/lib/libglib-2.0.so.0
#19 0x00007f109ab16dac in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#20 0x00007f109e858077 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#21 0x00007f109e7fe532 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#22 0x00007f109e805f0c in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#23 0x00000000004328ef in main (argc=<optimized out>, argv=<optimized out>) at /home/bshah/aur/plasma-workspace-git/src/plasma-workspace/shell/main.cpp:150

Reproducible: Always
Comment 1 David Edmundson 2015-02-19 10:49:34 UTC
Git commit 5a28172868cdc51607e0e87172d4d4fb6f01b896 by David Edmundson.
Committed on 12/02/2015 at 21:29.
Pushed by davidedmundson into branch 'master'.

Avoid code path that leaves local config locked

The local config file gets locked on line 415, if we return early we
need to unlock it.

REVIEW: 122549

M  +6    -0    src/core/kconfig.cpp

http://commits.kde.org/kconfig/5a28172868cdc51607e0e87172d4d4fb6f01b896