Bug 287795 - Crash when sycoca is updated
Summary: Crash when sycoca is updated
Status: RESOLVED FIXED
Alias: None
Product: plasma4
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-11-29 00:45 UTC by Christoph Feck
Modified: 2011-12-02 20:53 UTC (History)
2 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 Christoph Feck 2011-11-29 00:45:09 UTC
Application: plasma-desktop (0.4)
KDE Platform Version: 4.7.3 (4.7.3) (Compiled from sources)
Qt Version: 4.8.0
Operating System: Linux 3.1.0-1.2-desktop i686
Distribution: "openSUSE 12.1 (i586)"

-- Information about the crash:
- What I was doing when the application crashed:

I was installing calligra, which triggered sycoca update. This caused Plasma to crash. The crash is relatively new, did not happen three days ago.

-- Backtrace:
Application: Plasma Desktop Shell (kdeinit4), signal: Aborted
82	T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
[Current thread is 1 (Thread 0xb537a710 (LWP 20207))]

Thread 4 (Thread 0xad6e9b70 (LWP 20209)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:170
#1  0xb2558d4c in WTF::TCMalloc_PageHeap::scavengerThread() () from /local/qt4/lib/libQtWebKit.so.4
#2  0xb2558447 in WTF::TCMalloc_PageHeap::runScavengerThread(void*) () from /local/qt4/lib/libQtWebKit.so.4
#3  0xb6b4ca7d in start_thread (arg=0xad6e9b70) at pthread_create.c:301
#4  0xb5c6b8fe in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133

Thread 3 (Thread 0xacd85b70 (LWP 20210)):
#0  0xb6cf6175 in QFlags<QEventLoop::ProcessEventsFlag>::operator& (this=0x83772e8, f=QEventLoop::X11ExcludeTimers) at ../../include/QtCore/../../../../git/Qt/frameworks/qt/src/corelib/global/qglobal.h:2303
#1  0xb6d2e512 in timerSourcePrepareHelper (src=0x8377290, timeout=0xacd8514c) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:136
#2  0xb6d2e788 in idleTimerSourcePrepare (source=0x8376ab0, timeout=0xacd8514c) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:216
#3  0xb557444c in g_main_context_prepare (context=0x8377060, priority=0xacd851a8) at gmain.c:2746
#4  0xb5575207 in g_main_context_iterate (context=0x8377060, block=1, dispatch=1, self=<optimized out>) at gmain.c:3053
#5  0xb55757fa in g_main_context_iteration (context=0x8377060, may_block=1) at gmain.c:3136
#6  0xb6d2f0a4 in QEventDispatcherGlib::processEvents (this=0x837e120, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:426
#7  0xb6cf5bc5 in QEventLoop::processEvents (this=0xacd852c8, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventloop.cpp:149
#8  0xb6cf5d33 in QEventLoop::exec (this=0xacd852c8, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventloop.cpp:204
#9  0xb6bd8a01 in QThread::exec (this=0x8357180) at /local/git/Qt/frameworks/qt/src/corelib/thread/qthread.cpp:501
#10 0xb6bd8b81 in QThread::run (this=0x8357180) at /local/git/Qt/frameworks/qt/src/corelib/thread/qthread.cpp:568
#11 0xb6bdb1b9 in QThreadPrivate::start (arg=0x8357180) at /local/git/Qt/frameworks/qt/src/corelib/thread/qthread_unix.cpp:298
#12 0xb6b4ca7d in start_thread (arg=0xacd85b70) at pthread_create.c:301
#13 0xb5c6b8fe in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133

Thread 2 (Thread 0xa5e7fb70 (LWP 20223)):
#0  __pthread_mutex_lock (mutex=0x86349fc) at pthread_mutex_lock.c:127
#1  0xb55742cb in g_main_context_prepare (context=0x86349f8, priority=0xa5e7f178) at gmain.c:2674
#2  0xb5575207 in g_main_context_iterate (context=0x86349f8, block=1, dispatch=1, self=<optimized out>) at gmain.c:3053
#3  0xb55757fa in g_main_context_iteration (context=0x86349f8, may_block=1) at gmain.c:3136
#4  0xb6d2f0a4 in QEventDispatcherGlib::processEvents (this=0x867be70, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:426
#5  0xb6cf5bc5 in QEventLoop::processEvents (this=0xa5e7f298, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventloop.cpp:149
#6  0xb6cf5d33 in QEventLoop::exec (this=0xa5e7f298, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventloop.cpp:204
#7  0xb6bd8a01 in QThread::exec (this=0x8703fc0) at /local/git/Qt/frameworks/qt/src/corelib/thread/qthread.cpp:501
#8  0xb6cd3bfe in QInotifyFileSystemWatcherEngine::run (this=0x8703fc0) at /local/git/Qt/frameworks/qt/src/corelib/io/qfilesystemwatcher_inotify.cpp:248
#9  0xb6bdb1b9 in QThreadPrivate::start (arg=0x8703fc0) at /local/git/Qt/frameworks/qt/src/corelib/thread/qthread_unix.cpp:298
#10 0xb6b4ca7d in start_thread (arg=0xa5e7fb70) at pthread_create.c:301
#11 0xb5c6b8fe in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133

Thread 1 (Thread 0xb537a710 (LWP 20207)):
[KCrash Handler]
#6  0xb5bc48c5 in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#7  0xb5bc61d5 in __GI_abort () at abort.c:93
#8  0xb6bcec7f in qt_message_output (msgType=QtFatalMsg, buf=0x8922a18 "ASSERT: \"item_exists()\" in file /local/qt4/include/QtCore/qhash.h, line 1037") at /local/git/Qt/frameworks/qt/src/corelib/global/qglobal.cpp:2255
#9  0xb6bcede7 in qt_message (msgType=QtFatalMsg, msg=0xb6d71a04 "ASSERT: \"%s\" in file %s, line %d", ap=0xbfffb334 "\"\320>\263") at /local/git/Qt/frameworks/qt/src/corelib/global/qglobal.cpp:2301
#10 0xb6bcf213 in qFatal (msg=0xb6d71a04 "ASSERT: \"%s\" in file %s, line %d") at /local/git/Qt/frameworks/qt/src/corelib/global/qglobal.cpp:2484
#11 0xb6bce836 in qt_assert (assertion=0xb33ed022 "item_exists()", file=0xb33ed000 "/local/qt4/include/QtCore/qhash.h", line=1037) at /local/git/Qt/frameworks/qt/src/corelib/global/qglobal.cpp:1999
#12 0xb325b20e in QMutableHashIterator<QString, Plasma::DataContainer*>::key (this=0xbfffb38c) at /local/qt4/include/QtCore/qhash.h:1037
#13 0xb32587c0 in Plasma::DataEngine::removeAllSources (this=0x83131c8) at /local/git/KDE/libs/kdelibs/plasma/dataengine.cpp:337
#14 0xa520a7e1 in AppsEngine::sycocaChanged (this=0x83131c8, changes=...) at /local/git/KDE/base/kde-workspace/plasma/generic/dataengines/apps/appsengine.cpp:43
#15 0xa520b172 in AppsEngine::qt_static_metacall (_o=0x83131c8, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0xbfffb518) at /local/build/KDE/base/kde-workspace/plasma/generic/dataengines/apps/appsengine.moc:49
#16 0xb6d13665 in QMetaObject::activate (sender=0x8223180, m=0xb723f4ec, local_signal_index=1, argv=0xbfffb518) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qobject.cpp:3547
#17 0xb713f692 in KSycoca::databaseChanged (this=0x8223180, _t1=...) at /local/build/KDE/libs/kdelibs/kdecore/ksycoca.moc:112
#18 0xb713e3fd in KSycoca::notifyDatabaseChanged (this=0x8223180, changeList=...) at /local/git/KDE/libs/kdelibs/kdecore/sycoca/ksycoca.cpp:367
#19 0xb713f4ec in KSycoca::qt_static_metacall (_o=0x8223180, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfffb5d4) at /local/build/KDE/libs/kdelibs/kdecore/ksycoca.moc:57
#20 0xb713f5fc in KSycoca::qt_metacall (this=0x8223180, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfffb5d4) at /local/build/KDE/libs/kdelibs/kdecore/ksycoca.moc:96
#21 0xb6ec4b4a in QDBusConnectionPrivate::deliverCall (this=0x810f028, object=0x8223180, msg=..., metaTypes=..., slotIdx=6) at /local/git/Qt/frameworks/qt/src/dbus/qdbusintegrator.cpp:947
#22 0xb6ecf738 in QDBusCallDeliveryEvent::placeMetaCall (this=0x8b62810, object=0x8223180) at /local/git/Qt/frameworks/qt/src/dbus/qdbusintegrator_p.h:103
#23 0xb6d0ec28 in QObject::event (this=0x8223180, e=0x8b62810) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qobject.cpp:1195
#24 0xb602d80e in QApplicationPrivate::notify_helper (this=0x8124038, receiver=0x8223180, e=0x8b62810) at /local/git/Qt/frameworks/qt/src/gui/kernel/qapplication.cpp:4550
#25 0xb602b11e in QApplication::notify (this=0x810cc08, receiver=0x8223180, e=0x8b62810) at /local/git/Qt/frameworks/qt/src/gui/kernel/qapplication.cpp:3932
#26 0xb75ac76a in KApplication::notify (this=0x810cc08, receiver=0x8223180, event=0x8b62810) at /local/git/KDE/libs/kdelibs/kdeui/kernel/kapplication.cpp:311
#27 0xb6cf8102 in QCoreApplication::notifyInternal (this=0x810cc08, receiver=0x8223180, event=0x8b62810) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qcoreapplication.cpp:876
#28 0xb6cfb7b7 in QCoreApplication::sendEvent (receiver=0x8223180, event=0x8b62810) at ../../include/QtCore/../../../../git/Qt/frameworks/qt/src/corelib/kernel/qcoreapplication.h:231
#29 0xb6cf8ffe in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x805e200) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qcoreapplication.cpp:1500
#30 0xb6cf8cbb in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qcoreapplication.cpp:1393
#31 0xb6d2f754 in QCoreApplication::sendPostedEvents () at ../../include/QtCore/../../../../git/Qt/frameworks/qt/src/corelib/kernel/qcoreapplication.h:236
#32 0xb6d2e8d2 in postEventSourceDispatch (s=0x812ac20) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:279
#33 0xb5574e2f in g_main_dispatch (context=0x812a400) at gmain.c:2425
#34 g_main_context_dispatch (context=0x812a400) at gmain.c:2995
#35 0xb5575560 in g_main_context_iterate (context=0x812a400, block=-1252507824, dispatch=1, self=<optimized out>) at gmain.c:3073
#36 0xb55757fa in g_main_context_iteration (context=0x812a400, may_block=1) at gmain.c:3136
#37 0xb6d2f084 in QEventDispatcherGlib::processEvents (this=0x80db670, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventdispatcher_glib.cpp:424
#38 0xb60f569a in QGuiEventDispatcherGlib::processEvents (this=0x80db670, flags=...) at /local/git/Qt/frameworks/qt/src/gui/kernel/qguieventdispatcher_glib.cpp:204
#39 0xb6cf5bc5 in QEventLoop::processEvents (this=0xbfffbf7c, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventloop.cpp:149
#40 0xb6cf5d33 in QEventLoop::exec (this=0xbfffbf7c, flags=...) at /local/git/Qt/frameworks/qt/src/corelib/kernel/qeventloop.cpp:204
#41 0xb6cf877e in QCoreApplication::exec () at /local/git/Qt/frameworks/qt/src/corelib/kernel/qcoreapplication.cpp:1148
#42 0xb602adb0 in QApplication::exec () at /local/git/Qt/frameworks/qt/src/gui/kernel/qapplication.cpp:3811
#43 0xaed9dbca in kdemain (argc=1, argv=0x80b6980) at /local/git/KDE/base/kde-workspace/plasma/desktop/shell/main.cpp:120
#44 0x0804ddfe in launch (argc=1, _name=0x80af3cc "/local/kde4/bin/plasma-desktop", args=0x80af3eb "", cwd=0x0, envc=0, envs=0x80af3ef "", reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x8053619 "0") at /local/git/KDE/libs/kdelibs/kinit/kinit.cpp:734
#45 0x0804ee63 in handle_launcher_request (sock=8, who=0x80538b4 "launcher") at /local/git/KDE/libs/kdelibs/kinit/kinit.cpp:1226
#46 0x0804f5df in handle_requests (waitForPid=0) at /local/git/KDE/libs/kdelibs/kinit/kinit.cpp:1419
#47 0x08050ed4 in main (argc=4, argv=0xbfffc774, envp=0xbfffc788) at /local/git/KDE/libs/kdelibs/kinit/kinit.cpp:1907

Possible duplicates by query: bug 287560, bug 287422, bug 286154, bug 284718, bug 284709.

Reported using DrKonqi
Comment 1 Bogdan Udrescu 2011-11-29 17:41:48 UTC
duplicate of Bug 283303
Comment 2 Christoph Feck 2011-11-29 22:59:07 UTC
Yes, same backtrace, looks like bug 283303 reappeared...
Comment 3 Aaron J. Seigo 2011-11-30 08:23:19 UTC
Git commit a8b49bc65afb1d05e7de0148c3116f2f6a1f98de by Aaron Seigo.
Committed on 30/11/2011 at 09:17.
Pushed by aseigo into branch 'KDE/4.7'.

grab the source name before removing the iterator

the previous fix, which i accidentally reverted while cleaning up this code,
was actually wrong (so in a way i'm glad i caught it): the signal MUST be emitted
AFTER the item is removed from the collection otherwise any code that checks to
see if that source exists will see that it does still exist even though it was
just signaled as being removed. order sometimes really matters :)

CCMAIL:kde@rusu.info
BUG:287795

M  +3    -2    plasma/dataengine.cpp

http://commits.kde.org/kdelibs/a8b49bc65afb1d05e7de0148c3116f2f6a1f98de
Comment 4 Aaron J. Seigo 2011-12-02 20:53:20 UTC
Git commit c0e531bae10f0d80b30ae18033d12077a2c2ef32 by Aaron Seigo.
Committed on 30/11/2011 at 09:17.
Pushed by aseigo into branch 'frameworks'.

grab the source name before removing the iterator

the previous fix, which i accidentally reverted while cleaning up this code,
was actually wrong (so in a way i'm glad i caught it): the signal MUST be emitted
AFTER the item is removed from the collection otherwise any code that checks to
see if that source exists will see that it does still exist even though it was
just signaled as being removed. order sometimes really matters :)

CCMAIL:kde@rusu.info
BUG:287795

M  +3    -2    plasma/dataengine.cpp

http://commits.kde.org/kdelibs/c0e531bae10f0d80b30ae18033d12077a2c2ef32