Bug 319481

Summary: kmail crash
Product: [Unmaintained] nepomuk Reporter: Andrew St.Martin <andrewstmartin>
Component: generalAssignee: Nepomuk Bugs Coordination <nepomuk-bugs>
Status: RESOLVED FIXED    
Severity: crash CC: me, nepomuk-bugs
Priority: NOR    
Version: 4.10.2   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Andrew St.Martin 2013-05-07 17:27:58 UTC
Application: kmail (4.10.2)
KDE Platform Version: 4.10.2
Qt Version: 4.8.4
Operating System: Linux 3.8.0-19-generic x86_64
Distribution: Ubuntu 13.04

-- Information about the crash:
- What I was doing when the application crashed:
kmail was acting very sluggishly.  I attempted to quit the app to restart when the crash occurred.

The crash can be reproduced sometimes.

-- Backtrace:
Application: KMail (kmail), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
[Current thread is 1 (Thread 0x7f4f37045800 (LWP 8051))]

Thread 6 (Thread 0x7f4f10bad700 (LWP 8055)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f4f28779585 in ?? () from /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
#2  0x00007f4f287795d9 in ?? () from /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
#3  0x00007f4f31cd3f8e in start_thread (arg=0x7f4f10bad700) at pthread_create.c:311
#4  0x00007f4f343dbe1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 5 (Thread 0x7f4ecfc15700 (LWP 8056)):
#0  pthread_mutex_lock (mutex=0x7f4ec8000a60) at forward.c:192
#1  0x00007f4f2c6665c1 in g_mutex_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f4f2c62690b in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f4f2c6270fe in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f4f2c627304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f4f34d6a036 in QEventDispatcherGlib::processEvents (this=0x7f4ec80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#6  0x00007f4f34d3a38f in QEventLoop::processEvents (this=this@entry=0x7f4ecfc14d50, flags=...) at kernel/qeventloop.cpp:149
#7  0x00007f4f34d3a618 in QEventLoop::exec (this=this@entry=0x7f4ecfc14d50, flags=...) at kernel/qeventloop.cpp:204
#8  0x00007f4f34c3c410 in QThread::exec (this=this@entry=0xe92030) at thread/qthread.cpp:542
#9  0x00007f4f34d1bedf in QInotifyFileSystemWatcherEngine::run (this=0xe92030) at io/qfilesystemwatcher_inotify.cpp:256
#10 0x00007f4f34c3ebec in QThreadPrivate::start (arg=0xe92030) at thread/qthread_unix.cpp:338
#11 0x00007f4f31cd3f8e in start_thread (arg=0x7f4ecfc15700) at pthread_create.c:311
#12 0x00007f4f343dbe1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 4 (Thread 0x7f4eceb85700 (LWP 8057)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f4f284bfa09 in ?? () from /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
#2  0x00007f4f287a7cee in ?? () from /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
#3  0x00007f4f31cd3f8e in start_thread (arg=0x7f4eceb85700) at pthread_create.c:311
#4  0x00007f4f343dbe1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 3 (Thread 0x7f4ecd573700 (LWP 8062)):
#0  0x00007f4f2c6246f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1  0x00007f4f2c626d12 in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f4f2c627175 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f4f2c627304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f4f34d6a036 in QEventDispatcherGlib::processEvents (this=0x7f4eb80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#5  0x00007f4f34d3a38f in QEventLoop::processEvents (this=this@entry=0x7f4ecd572d80, flags=...) at kernel/qeventloop.cpp:149
#6  0x00007f4f34d3a618 in QEventLoop::exec (this=this@entry=0x7f4ecd572d80, flags=...) at kernel/qeventloop.cpp:204
#7  0x00007f4f34c3c410 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:542
#8  0x00007f4f34c3ebec in QThreadPrivate::start (arg=0xe8fb60) at thread/qthread_unix.cpp:338
#9  0x00007f4f31cd3f8e in start_thread (arg=0x7f4ecd573700) at pthread_create.c:311
#10 0x00007f4f343dbe1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 2 (Thread 0x7f4ebffff700 (LWP 8226)):
[KCrash Handler]
#6  lockInline (this=0x40) at /usr/include/qt4/QtCore/qmutex.h:187
#7  QMutexLocker (m=0x40, this=<synthetic pointer>) at /usr/include/qt4/QtCore/qmutex.h:109
#8  Nepomuk2::ResourceData::load (this=this@entry=0x0) at ../../libnepomukcore/resource/resourcedata.cpp:345
#9  0x00007f4f2d0681ce in Nepomuk2::ResourceData::property (this=0x0, uri=...) at ../../libnepomukcore/resource/resourcedata.cpp:238
#10 0x00007f4f2d078143 in Nepomuk2::Resource::property (this=this@entry=0x7f4ebfffed10, uri=...) at ../../libnepomukcore/resource/resource.cpp:226
#11 0x00007f4f3089ca6a in MessageCore::NepomukResourceRetrieverRunnable::run (this=0x3e03270) at ../../messagecore/asyncnepomukresourceretriever.cpp:48
#12 0x00007f4f34c3255d in QThreadPoolThread::run (this=0x11d9910) at concurrent/qthreadpool.cpp:107
#13 0x00007f4f34c3ebec in QThreadPrivate::start (arg=0x11d9910) at thread/qthread_unix.cpp:338
#14 0x00007f4f31cd3f8e in start_thread (arg=0x7f4ebffff700) at pthread_create.c:311
#15 0x00007f4f343dbe1d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113

Thread 1 (Thread 0x7f4f37045800 (LWP 8051)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f4f34c3f14b in wait (time=18446744073709551615, this=0x114cd10) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=this@entry=0x11eba90, mutex=0x11eba68, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f4f34c31d2f in QThreadPoolPrivate::waitForDone (this=0x11eb9e0, msecs=msecs@entry=-1) at concurrent/qthreadpool.cpp:298
#4  0x00007f4f34c337dd in QThreadPool::~QThreadPool (this=0x11eb888, __in_chrg=<optimized out>) at concurrent/qthreadpool.cpp:440
#5  0x00007f4f3089be11 in ~AsyncNepomukResourceRetrieverPrivate (this=0x11eb880, __in_chrg=<optimized out>) at ../../messagecore/asyncnepomukresourceretriever.cpp:59
#6  MessageCore::AsyncNepomukResourceRetriever::~AsyncNepomukResourceRetriever (this=0x11d85c0, __in_chrg=<optimized out>) at ../../messagecore/asyncnepomukresourceretriever.cpp:124
#7  0x00007f4f302b9812 in ~CallbackNepomukResourceRetriever (this=0x11d85c0, __in_chrg=<optimized out>) at ../../messagelist/core/callbacknepomukresourceretriever.h:32
#8  MessageList::CallbackNepomukResourceRetriever::~CallbackNepomukResourceRetriever (this=0x11d85c0, __in_chrg=<optimized out>) at ../../messagelist/core/callbacknepomukresourceretriever.h:32
#9  0x00007f4f3431e121 in __run_exit_handlers (status=1, listp=0x7f4f346a36a8 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:77
#10 0x00007f4f3431e1a5 in __GI_exit (status=<optimized out>) at exit.c:99
#11 0x00007f4f352cf348 in qt_xio_errhandler () at kernel/qapplication_x11.cpp:782
#12 0x00007f4f36a72888 in KApplication::xioErrhandler (this=0x7fff54bddbf0, dpy=0x829bb0) at ../../kdeui/kernel/kapplication.cpp:419
#13 0x00007f4f33bc96de in _XIOError () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#14 0x00007f4f33bc716d in _XEventsQueued () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#15 0x00007f4f33bb875b in XEventsQueued () from /usr/lib/x86_64-linux-gnu/libX11.so.6
#16 0x00007f4f3530ac37 in x11EventSourcePrepare (s=0x7cfda0, timeout=<optimized out>) at kernel/qguieventdispatcher_glib.cpp:77
#17 0x00007f4f2c626900 in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007f4f2c6270fe in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007f4f2c627304 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007f4f34d6a016 in QEventDispatcherGlib::processEvents (this=0x717b00, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#21 0x00007f4f3530b1ae in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#22 0x00007f4f34d3a38f in QEventLoop::processEvents (this=this@entry=0x7fff54bdd810, flags=...) at kernel/qeventloop.cpp:149
#23 0x00007f4f34d3a618 in QEventLoop::exec (this=0x7fff54bdd810, flags=...) at kernel/qeventloop.cpp:204
#24 0x00007f4f364b1203 in KJob::exec (this=this@entry=0xc5f240) at ../../kdecore/jobs/kjob.cpp:210
#25 0x00007f4f35e2ee28 in KMKernel::cleanup (this=this@entry=0x7fff54bddc20) at ../../kmail/kmkernel.cpp:1323
#26 0x0000000000402c9c in main (argc=<optimized out>, argv=<optimized out>) at ../../kmail/main.cpp:148

Reported using DrKonqi
Comment 1 Vishesh Handa 2013-06-10 20:14:30 UTC

*** This bug has been marked as a duplicate of bug 320097 ***
Comment 2 Simeon Bird 2013-06-11 22:03:01 UTC
Git commit 9b7abb202407bc42e3f711aa0f51a33ede80a3bc by Simeon Bird.
Committed on 06/06/2013 at 01:22.
Pushed by sbird into branch 'master'.

Resource: Null guards for m_data

It is possible, during shutdown, for m_data to be null briefly (see
ResourceManager::cleanupResources). If a property were accessed
during this time, we could crash.

The patch checks whether m_data is null in various functions, and
returns empty items if so.
Related: bug 320097
REVIEW: 110877

M  +57   -14   libnepomukcore/resource/resource.cpp

http://commits.kde.org/nepomuk-core/9b7abb202407bc42e3f711aa0f51a33ede80a3bc