/usr/bin/muon-updater:11:QString:KConfig::name:KSharedConfig::openConfig:KSharedConfig::openConfig:Application::desktopContents
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Muon |
Fix Released
|
High
|
|||
muon (Ubuntu) |
Fix Released
|
Medium
|
Harald Sitter | ||
Trusty |
Fix Released
|
Medium
|
Harald Sitter | ||
Utopic |
Fix Released
|
Medium
|
Harald Sitter |
Bug Description
[Impact]
libmuon's application backend (app-data based package listing) uses KSharedConfig to read the app-data desktop files, KSharedConfig however uses a global static object to manage sharing and this global static is not properly guarded against threaded access. This leads to semingly random crashes in muon-updater and muon-discover (also see bug #1317439 bug #1317440 bug #1317441). The proposed fix is to not use KSharedConfig and use KConfig directly as that is doing selfcontained file reading avoiding unguarded access to global statics and in general threads getting in the way of one another.
[Test Case]
Since this is a thread timing dependent bug we have to find a way to test whether the update fixes the crash. Giving all applications a good test run for a week should sufficiently prevent regressions though.
Monitoring errors.ubuntu is as good as it gets in terms of verifying the fix.
[Regression Potential]
Parsing of desktop file values could be broken which would render muon-discover useless.
[Other Info]
N/A
----
The Ubuntu Error Tracker has been receiving reports about a problem regarding muon. This problem was most recently seen with version 2.2.0-0ubuntu3, the problem page at https:/
Changed in muon (Ubuntu Trusty): | |
assignee: | nobody → Harald Sitter (apachelogger) |
importance: | Undecided → Critical |
importance: | Critical → Medium |
status: | New → In Progress |
Changed in muon (Ubuntu Utopic): | |
status: | New → Triaged |
importance: | Undecided → Medium |
assignee: | nobody → Harald Sitter (apachelogger) |
Changed in muon: | |
importance: | Unknown → High |
status: | Unknown → Fix Released |
description: | updated |
Changed in muon (Ubuntu Trusty): | |
status: | In Progress → Fix Committed |
tags: | removed: verification-needed |
Application: muon-updater (2.2.0)
KDE Platform Version: 4.13.0
Qt Version: 4.8.6
Operating System: Linux 3.13.0-24-generic x86_64
Distribution: Ubuntu 14.04 LTS
-- Information about the crash:
- What I was doing when the application crashed:
i opened muon Descover update when the application crashed unexpectedly
-- Backtrace: 64-linux- gnu/libthread_ db.so.1" .
Application: Muon Update Manager (muon-updater), signal: Segmentation fault
Using host libthread_db library "/lib/x86_
[Current thread is 1 (Thread 0x7fe5367f17c0 (LWP 7645))]
Thread 5 (Thread 0x7fe522dc0700 (LWP 7646)): enable_ asynccancel () at ../nptl/ sysdeps/ unix/sysv/ linux/x86_ 64/cancellation .S:61 unix/syscall- template. S:81 64-linux- gnu/libglib- 2.0.so. 0 context_ check () from /lib/x86_ 64-linux- gnu/libglib- 2.0.so. 0 64-linux- gnu/libglib- 2.0.so. 0 context_ iteration () from /lib/x86_ 64-linux- gnu/libglib- 2.0.so. 0 rGlib:: processEvents (this=0x7fe51c0 008c0, flags=...) at kernel/ qeventdispatche r_glib. cpp:436 :processEvents (this=this@ entry=0x7fe522d bfde0, flags=...) at kernel/ qeventloop. cpp:149 entry=0x7fe522d bfde0, flags=...) at kernel/ qeventloop. cpp:204 entry=0x10359c0 ) at thread/ qthread. cpp:537 temWatcherEngin e::run (this=0x10359c0) at io/qfilesystemw atcher_ inotify. cpp:265 :start (arg=0x10359c0) at thread/ qthread_ unix.cpp: 349 0700) at pthread_ create. c:312 unix/sysv/ linux/x86_ 64/clone. S:111
#0 __libc_
#1 0x00007fe533e436b2 in read () at ../sysdeps/
#2 0x00007fe530d52c20 in ?? () from /lib/x86_
#3 0x00007fe530d11b14 in g_main_
#4 0x00007fe530d11f7b in ?? () from /lib/x86_
#5 0x00007fe530d120ec in g_main_
#6 0x00007fe5345cb7be in QEventDispatche
#7 0x00007fe53459d0af in QEventLoop:
#8 0x00007fe53459d3a5 in QEventLoop::exec (this=this@
#9 0x00007fe534499c5f in QThread::exec (this=this@
#10 0x00007fe53457e823 in QInotifyFileSys
#11 0x00007fe53449c32f in QThreadPrivate:
#12 0x00007fe5311f1182 in start_thread (arg=0x7fe522dc
#13 0x00007fe533e5230d in clone () at ../sysdeps/
Thread 4 (Thread 0x7fe521f88700 (LWP 7647)): unix/syscall- template. S:81 ::run (this=0x7fe5349 05540 <processManager ()::processMana ger>) at io/qprocess_ unix.cpp: 270 :start (arg=0x7fe534905540 <processManager ()::processMana ger>) at thread/ qthread_ unix.cpp: 349 8700) at pthread_ create. c:312 unix/sysv/ linux/x86_ 64/clone. S:111
#0 0x00007fe533e49c33 in select () at ../sysdeps/
#1 0x00007fe53457b171 in QProcessManager
#2 0x00007fe53449c32f in QThreadPrivate:
#3 0x00007fe5311f1182 in start_thread (arg=0x7fe521f8
#4 0x00007fe533e5230d in clone () at ../sysdeps/
Thread 3 (Thread 0x7fe518998700 (LWP 7658)): entry=0x7fe5189 97b40) at /usr/include/ qt4/QtCore/ qstring. h:725 config/ kconfig. cpp:532 :openConfig (componentData=..., fileName=..., flags=..., resType= resType@ entry=0x7fe5211 37640 "config") at ../../kdecore/ config/ ksharedconfig. cpp:46 :openConfig (fileName=..., flags=..., resType= resType@ entry=0x7fe5211 37640 "config") at ../../kdecore/ config/ ksharedconfig. cpp:35
[KCrash Handler]
#6 QString (other=<error reading variable: Cannot access memory at address 0x4318>, this=this@
#7 KConfig::name (this=0x4310) at ../../kdecore/
#8 0x00007fe5349b99b6 in KSharedConfig:
#9 0x00007fe5349b9b5f in KSharedConfig:
#10 0x00007fe521124a21 in Application::...