Bug 333599 - opening muon Descover crash
Summary: opening muon Descover crash
Status: RESOLVED FIXED
Alias: None
Product: Discover
Classification: Applications
Component: Updates (interactive) (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Aleix Pol
URL:
Keywords: drkonqi
: 320575 320822 332038 334790 (view as bug list)
Depends on:
Blocks:
 
Reported: 2014-04-18 21:00 UTC by Anthony
Modified: 2016-03-02 13:24 UTC (History)
9 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anthony 2014-04-18 21:00:06 UTC
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:
Application: Muon Update Manager (muon-updater), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fe5367f17c0 (LWP 7645))]

Thread 5 (Thread 0x7fe522dc0700 (LWP 7646)):
#0  __libc_enable_asynccancel () at ../nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S:61
#1  0x00007fe533e436b2 in read () at ../sysdeps/unix/syscall-template.S:81
#2  0x00007fe530d52c20 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007fe530d11b14 in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007fe530d11f7b in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007fe530d120ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x00007fe5345cb7be in QEventDispatcherGlib::processEvents (this=0x7fe51c0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:436
#7  0x00007fe53459d0af in QEventLoop::processEvents (this=this@entry=0x7fe522dbfde0, flags=...) at kernel/qeventloop.cpp:149
#8  0x00007fe53459d3a5 in QEventLoop::exec (this=this@entry=0x7fe522dbfde0, flags=...) at kernel/qeventloop.cpp:204
#9  0x00007fe534499c5f in QThread::exec (this=this@entry=0x10359c0) at thread/qthread.cpp:537
#10 0x00007fe53457e823 in QInotifyFileSystemWatcherEngine::run (this=0x10359c0) at io/qfilesystemwatcher_inotify.cpp:265
#11 0x00007fe53449c32f in QThreadPrivate::start (arg=0x10359c0) at thread/qthread_unix.cpp:349
#12 0x00007fe5311f1182 in start_thread (arg=0x7fe522dc0700) at pthread_create.c:312
#13 0x00007fe533e5230d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 4 (Thread 0x7fe521f88700 (LWP 7647)):
#0  0x00007fe533e49c33 in select () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007fe53457b171 in QProcessManager::run (this=0x7fe534905540 <processManager()::processManager>) at io/qprocess_unix.cpp:270
#2  0x00007fe53449c32f in QThreadPrivate::start (arg=0x7fe534905540 <processManager()::processManager>) at thread/qthread_unix.cpp:349
#3  0x00007fe5311f1182 in start_thread (arg=0x7fe521f88700) at pthread_create.c:312
#4  0x00007fe533e5230d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 3 (Thread 0x7fe518998700 (LWP 7658)):
[KCrash Handler]
#6  QString (other=<error reading variable: Cannot access memory at address 0x4318>, this=this@entry=0x7fe518997b40) at /usr/include/qt4/QtCore/qstring.h:725
#7  KConfig::name (this=0x4310) at ../../kdecore/config/kconfig.cpp:532
#8  0x00007fe5349b99b6 in KSharedConfig::openConfig (componentData=..., fileName=..., flags=..., resType=resType@entry=0x7fe521137640 "config") at ../../kdecore/config/ksharedconfig.cpp:46
#9  0x00007fe5349b9b5f in KSharedConfig::openConfig (fileName=..., flags=..., resType=resType@entry=0x7fe521137640 "config") at ../../kdecore/config/ksharedconfig.cpp:35
#10 0x00007fe521124a21 in Application::desktopContents (this=this@entry=0x7fe510863170, filename=...) at /build/buildd/muon-2.2.0/libmuon/backends/ApplicationBackend/Application.cpp:440
#11 0x00007fe5211286d0 in Application::Application (this=0x7fe510863170, fileName=..., backend=<optimized out>) at /build/buildd/muon-2.2.0/libmuon/backends/ApplicationBackend/Application.cpp:63
#12 0x00007fe52111de30 in init (backend=0x132bc20, thread=0xdec040) at /build/buildd/muon-2.2.0/libmuon/backends/ApplicationBackend/ApplicationBackend.cpp:101
#13 0x00007fe521122a76 in QtConcurrent::StoredFunctorCall2<QVector<Application*>, QVector<Application*> (*)(QApt::Backend*, QThread*), QApt::Backend*, QThread*>::runFunctor (this=0x1de44c0) at /usr/include/qt4/QtCore/qtconcurrentstoredfunctioncall.h:470
#14 0x00007fe521123665 in QtConcurrent::RunFunctionTask<QVector<Application*> >::run (this=0x1de44c0) at /usr/include/qt4/QtCore/qtconcurrentrunbase.h:106
#15 0x00007fe53448ffee in QThreadPoolThread::run (this=0x1de4f50) at concurrent/qthreadpool.cpp:108
#16 0x00007fe53449c32f in QThreadPrivate::start (arg=0x1de4f50) at thread/qthread_unix.cpp:349
#17 0x00007fe5311f1182 in start_thread (arg=0x7fe518998700) at pthread_create.c:312
#18 0x00007fe533e5230d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 2 (Thread 0x7fe50f34f700 (LWP 7662)):
#0  0x00007fe533e44fbd in poll () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007fe530d11fe4 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fe530d120ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007fe5345cb7be in QEventDispatcherGlib::processEvents (this=0x7fe5080008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:436
#4  0x00007fe53459d0af in QEventLoop::processEvents (this=this@entry=0x7fe50f34ede0, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007fe53459d3a5 in QEventLoop::exec (this=this@entry=0x7fe50f34ede0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007fe534499c5f in QThread::exec (this=this@entry=0x1fcce90) at thread/qthread.cpp:537
#7  0x00007fe53457e823 in QInotifyFileSystemWatcherEngine::run (this=0x1fcce90) at io/qfilesystemwatcher_inotify.cpp:265
#8  0x00007fe53449c32f in QThreadPrivate::start (arg=0x1fcce90) at thread/qthread_unix.cpp:349
#9  0x00007fe5311f1182 in start_thread (arg=0x7fe50f34f700) at pthread_create.c:312
#10 0x00007fe533e5230d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

Thread 1 (Thread 0x7fe5367f17c0 (LWP 7645)):
#0  0x00007fe533e49c33 in select () at ../sysdeps/unix/syscall-template.S:81
#1  0x00007fe5345c92c7 in qt_safe_select (nfds=15, fdread=0x7fff9e95da10, fdwrite=0x7fff9e95da90, fdexcept=fdexcept@entry=0x0, orig_timeout=orig_timeout@entry=0x0) at kernel/qcore_unix.cpp:79
#2  0x00007fe534577c52 in select_msecs (nfds=<optimized out>, fdread=<optimized out>, fdwrite=<optimized out>, timeout=<optimized out>) at io/qprocess_unix.cpp:1041
#3  0x00007fe53457944a in QProcessPrivate::waitForFinished (this=this@entry=0x1f0d420, msecs=msecs@entry=-1) at io/qprocess_unix.cpp:1262
#4  0x00007fe53452f652 in QProcess::waitForFinished (this=this@entry=0x7fff9e95dba0, msecs=msecs@entry=-1) at io/qprocess.cpp:1780
#5  0x00007fe53453601f in QProcess::execute (program=..., arguments=...) at io/qprocess.cpp:2180
#6  0x00007fe534a5107f in KToolInvocation::startKdeinit () at ../../kdecore/kernel/ktoolinvocation.cpp:391
#7  0x00007fe534a51218 in KToolInvocation::klauncher () at ../../kdecore/kernel/ktoolinvocation.cpp:62
#8  0x00007fe533574e95 in KIO::Slave::createSlave (protocol=..., url=..., error=@0x7fff9e95de5c: 0, error_text=...) at ../../kio/kio/slave.cpp:428
#9  0x00007fe533568b29 in KIO::ProtoQueue::createSlave (this=this@entry=0x204dca0, protocol=..., job=job@entry=0xe96160, url=...) at ../../kio/kio/scheduler.cpp:537
#10 0x00007fe53356e3ea in KIO::ProtoQueue::startAJob (this=0x204dca0) at ../../kio/kio/scheduler.cpp:624
#11 0x00007fe5345b287a in QMetaObject::activate (sender=0x204dcf8, m=<optimized out>, local_signal_index=<optimized out>, argv=0x0) at kernel/qobject.cpp:3539
#12 0x00007fe5345b6a31 in QObject::event (this=0x204dcf8, e=<optimized out>) at kernel/qobject.cpp:1156
#13 0x00007fe534f90e2c in QApplicationPrivate::notify_helper (this=this@entry=0xe1e240, receiver=receiver@entry=0x204dcf8, e=e@entry=0x7fff9e95e450) at kernel/qapplication.cpp:4567
#14 0x00007fe534f974a0 in QApplication::notify (this=this@entry=0x7fff9e95e7c0, receiver=receiver@entry=0x204dcf8, e=e@entry=0x7fff9e95e450) at kernel/qapplication.cpp:4353
#15 0x00007fe535c9bbaa in KApplication::notify (this=0x7fff9e95e7c0, receiver=0x204dcf8, event=0x7fff9e95e450) at ../../kdeui/kernel/kapplication.cpp:311
#16 0x00007fe53459e4dd in QCoreApplication::notifyInternal (this=0x7fff9e95e7c0, receiver=0x204dcf8, event=0x7fff9e95e450) at kernel/qcoreapplication.cpp:953
#17 0x00007fe5345ce323 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#18 QTimerInfoList::activateTimers (this=0xe1e170) at kernel/qeventdispatcher_unix.cpp:621
#19 0x00007fe5345cb5f1 in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:193
#20 0x00007fe530d11e04 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007fe530d12048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007fe530d120ec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007fe5345cb7a1 in QEventDispatcherGlib::processEvents (this=0xded900, flags=...) at kernel/qeventdispatcher_glib.cpp:434
#24 0x00007fe535032bb6 in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#25 0x00007fe53459d0af in QEventLoop::processEvents (this=this@entry=0x7fff9e95e6c0, flags=...) at kernel/qeventloop.cpp:149
#26 0x00007fe53459d3a5 in QEventLoop::exec (this=this@entry=0x7fff9e95e6c0, flags=...) at kernel/qeventloop.cpp:204
#27 0x00007fe5345a2b79 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1225
#28 0x00007fe534f8f37c in QApplication::exec () at kernel/qapplication.cpp:3828
#29 0x000000000040ce11 in main (argc=1, argv=0x7fff9e95e8f8) at /build/buildd/muon-2.2.0/updater/main.cpp:57

Possible duplicates by query: bug 332038, bug 326143, bug 320575.

Reported using DrKonqi
Comment 1 Harald Sitter 2014-05-07 13:15:04 UTC
*** Bug 332038 has been marked as a duplicate of this bug. ***
Comment 2 Harald Sitter 2014-05-07 13:20:11 UTC
This is the cause of any and all KConfig crashes in muon applications.

The bug is ultimately caused by the Application backend which does the following out of the future'd init thread:
> KConfigGroup group = m_data->group("Desktop Entry");

m_data is:
>     KSharedConfigPtr m_data;

from KSharedConfig::openConfig:
>     const QList<KSharedConfig*> *list = globalSharedConfigList;

and the list is:
> K_GLOBAL_STATIC(QList<KSharedConfig*>, globalSharedConfigList)

since KSharedConfig is not thread safe what happens is that if a sharedconfig is accessed while the future init thread is running the globalSharedConfigList gets busted and crashes at a random later point in time.

the solution is to either not use a sharedconfig or move the config access out of the future thread and into a queued access via the mainloop.

furtheremore I am not actually sure the sharedconfig makes sense there since the application instance itself is a shared object, so there's probably nothing to be gained from using a sharedconfig there.
Comment 3 Aleix Pol 2014-05-07 16:17:16 UTC
Git commit 70cc5d6532829d8bf1a95cd46ca5403eb195e6ec by Aleix Pol.
Committed on 07/05/2014 at 16:16.
Pushed by apol into branch '2.2'.

Fix threading problem involving KSharedConfig

Stop using it in favor of QSharedPointer<KConfig>, so that we don't access
the shared database, which is not thread-safe.

M  +1    -6    libmuon/backends/ApplicationBackend/Application.cpp
M  +1    -2    libmuon/backends/ApplicationBackend/Application.h

http://commits.kde.org/muon/70cc5d6532829d8bf1a95cd46ca5403eb195e6ec
Comment 4 Jekyll Wu 2014-05-15 06:23:20 UTC
*** Bug 320575 has been marked as a duplicate of this bug. ***
Comment 5 Jekyll Wu 2014-05-15 06:23:25 UTC
*** Bug 334790 has been marked as a duplicate of this bug. ***
Comment 6 Jekyll Wu 2014-05-15 06:26:13 UTC
*** Bug 320822 has been marked as a duplicate of this bug. ***