Bug 303713

Summary: kwin crash when adding applets into the main amarok window
Product: [Plasma] kwin Reporter: Simon Andric <simonandric5>
Component: generalAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED FIXED    
Severity: crash Flags: thomas.luebking: ReviewRequest+
Priority: NOR    
Version: 4.8.97   
Target Milestone: 4.9.0   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Simon Andric 2012-07-18 03:17:01 UTC
Application: kwin (4.8.97)
KDE Platform Version: 4.8.97
Qt Version: 4.8.2
Operating System: Linux 3.5.0-4-generic i686
Distribution: Ubuntu quantal (development branch)

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

kwin crash when adding applets into the main amarok window. just added a few all of a sudden kwin restarted and dr. konqi turned up :)

im using (again) project neon :)

nice day

symon :)

The crash can be reproduced every time.

-- Backtrace:
Application: KWin (kwin), signal: Segmentation fault
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0xb1308980 (LWP 2612))]

Thread 4 (Thread 0xad6e1b40 (LWP 2619)):
#0  0xb77d1424 in __kernel_vsyscall ()
#1  0xb5a9f96b in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:169
#2  0xb75703dc in __pthread_cond_wait (cond=0xaf845368, mutex=0xaf845350) at forward.c:139
#3  0xad85cadc in ?? () from /usr/lib/i386-linux-gnu/dri/r600_dri.so
#4  0xb5a9bd4c in start_thread (arg=0xad6e1b40) at pthread_create.c:308
#5  0xb7562ace in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 3 (Thread 0xb00f3b40 (LWP 3960)):
[KCrash Handler]
#7  __memcmp_ssse3 () at ../sysdeps/i386/i686/multiarch/memcmp-ssse3.S:2102
#8  0xb5b242b9 in qstrcmp (str1=..., str2=...) at tools/qbytearray.cpp:346
#9  0xb5f01ccb in operator< (k1=..., k2=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/config/kconfigdata.h:122
#10 0xb5f04c53 in qMapLessThanKey<KEntryKey> (key1=..., key2=...) at /opt/project-neon/include/QtCore/qmap.h:107
#11 0xb5f04a20 in QMap<KEntryKey, KEntry>::findNode (this=0x9b97f90, akey=...) at /opt/project-neon/include/QtCore/qmap.h:487
#12 0xb5f03484 in QMap<KEntryKey, KEntry>::find (this=0x9b97f90, akey=...) at /opt/project-neon/include/QtCore/qmap.h:608
#13 0xb5f01f6e in KEntryMap::findEntry (this=0x9b97f90, group=..., key=..., flags=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/config/kconfigdata.h:211
#14 0xb5f02d95 in KEntryMap::getEntryOption (this=0x9b97f90, group=..., key=..., flags=..., option=KEntryMap::EntryImmutable) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/config/kconfigdata.h:403
#15 0xb5f005b5 in KConfig::isGroupImmutableImpl (this=0x9b9bca8, aGroup=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/config/kconfig.cpp:743
#16 0xb5f07107 in KConfigBase::isGroupImmutable (this=0x9b9bca8, aGroup=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/config/kconfigbase.cpp:91
#17 0xb5f0f2a3 in KConfigGroupPrivate::KConfigGroupPrivate (this=0xaf700468, owner=..., name=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/config/kconfiggroup.cpp:55
#18 0xb5f0995b in KConfigGroup::KConfigGroup (this=0xb00f2f18, master=..., _group=0xb60f1eda "KSycoca") at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/config/kconfiggroup.cpp:493
#19 0xb6076b92 in KSycocaPrivate::KSycocaPrivate (this=0xaf722ee0) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/sycoca/ksycoca.cpp:106
#20 0xb60771f7 in KSycoca::KSycoca (this=0xaf722cc0) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/sycoca/ksycoca.cpp:181
#21 0xb6079679 in KSycocaSingleton::sycoca (this=0xaf7029c8) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/sycoca/ksycoca.cpp:166
#22 0xb6077a8e in KSycoca::self () at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/sycoca/ksycoca.cpp:295
#23 0xb607cd64 in KSycocaFactory::KSycocaFactory (this=0xaf702730, factory_id=KST_KServiceTypeFactory) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/sycoca/ksycocafactory.cpp:53
#24 0xb5ff6715 in KServiceTypeFactory::KServiceTypeFactory (this=0xaf702730) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypefactory.cpp:31
#25 0xb5ff7138 in KSycocaFactorySingleton<KServiceTypeFactory>::self (this=0xaf7024e0) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/sycoca/ksycocafactory.h:200
#26 0xb5ff692e in KServiceTypeFactory::self () at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypefactory.cpp:65
#27 0xb5ff7d08 in KServiceTypeProfiles::ensureParsed (this=0xaf7015a8) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypeprofile.cpp:71
#28 0xb5ff8bed in KServiceTypeProfiles::hasProfile (this=0xaf7015a8, serviceType=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypeprofile.cpp:50
#29 0xb5ff83aa in KServiceTypeProfile::hasProfile (serviceType=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypeprofile.cpp:173
#30 0xb5ffa815 in KServiceTypeTrader::query (this=0x9f599d8, serviceType=..., constraint=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypetrader.cpp:137
#31 0xb773a30c in KWin::Scripting::queryScriptsToLoad (this=0x9cf8ce0, pluginStates=...) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/kwin/scripting/scripting.cpp:483
#32 0xb7743101 in QtConcurrent::StoredMemberFunctionPointerCall1<QList<QPair<bool, QPair<QString, QString> > >, KWin::Scripting, QMap<QString, QString>&, QMap<QString, QString> >::runFunctor (this=0xa86ad70) at /opt/project-neon/include/QtCore/qtconcurrentstoredfunctioncall.h:396
#33 0xb7743064 in QtConcurrent::RunFunctionTask<QList<QPair<bool, QPair<QString, QString> > > >::run (this=0xa86ad70) at /opt/project-neon/include/QtCore/qtconcurrentrunbase.h:106
#34 0xb5b11fe7 in QThreadPoolThread::run (this=0x9c22be0) at concurrent/qthreadpool.cpp:107
#35 0xb5b2194d in QThreadPrivate::start (arg=0x9c22be0) at thread/qthread_unix.cpp:307
#36 0xb5a9bd4c in start_thread (arg=0xb00f3b40) at pthread_create.c:308
#37 0xb7562ace in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 2 (Thread 0x9f23bb40 (LWP 3964)):
#0  0xb77d1424 in __kernel_vsyscall ()
#1  0xb755ec07 in syscall () at ../sysdeps/unix/sysv/linux/i386/syscall.S:30
#2  0xb5b21037 in _q_futex (addr=0xaf700e78, op=0, val=2, timeout=0x0, addr2=0x0, val2=0) at thread/qmutex_unix.cpp:99
#3  0xb5b210f6 in QMutexPrivate::wait (this=0xaf700e78, timeout=-1) at thread/qmutex_unix.cpp:113
#4  0xb5b1bfbd in QMutex::lockInternal (this=0xaf7015ac) at thread/qmutex.cpp:450
#5  0xb5b1bb4b in QMutex::lock (this=0xaf7015ac) at thread/qmutex.cpp:177
#6  0xb5f7a0bf in QMutex::lockInline (this=0xaf7015ac) at /opt/project-neon/include/QtCore/qmutex.h:198
#7  0xb5f7a008 in QMutexLocker::QMutexLocker (this=0x9f23b1bc, m=0xaf7015ac) at /opt/project-neon/include/QtCore/qmutex.h:109
#8  0xb5ff8be2 in KServiceTypeProfiles::hasProfile (this=0xaf7015a8, serviceType=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypeprofile.cpp:49
#9  0xb5ff83aa in KServiceTypeProfile::hasProfile (serviceType=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypeprofile.cpp:173
#10 0xb5ffa815 in KServiceTypeTrader::query (this=0x9f599d8, serviceType=..., constraint=...) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypetrader.cpp:137
#11 0xb7734ad6 in QtConcurrent::StoredConstMemberFunctionPointerCall2<QList<KSharedPtr<KService> >, KServiceTypeTrader, QString const&, QString, QString const&, QString>::runFunctor (this=0xa678410) at /opt/project-neon/include/QtCore/qtconcurrentstoredfunctioncall.h:638
#12 0xb7734a2e in QtConcurrent::RunFunctionTask<QList<KSharedPtr<KService> > >::run (this=0xa678410) at /opt/project-neon/include/QtCore/qtconcurrentrunbase.h:106
#13 0xb5b11fe7 in QThreadPoolThread::run (this=0xa896200) at concurrent/qthreadpool.cpp:107
#14 0xb5b2194d in QThreadPrivate::start (arg=0xa896200) at thread/qthread_unix.cpp:307
#15 0xb5a9bd4c in start_thread (arg=0x9f23bb40) at pthread_create.c:308
#16 0xb7562ace in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 1 (Thread 0xb1308980 (LWP 2612)):
#0  0xb77d1424 in __kernel_vsyscall ()
#1  0xb755ec07 in syscall () at ../sysdeps/unix/sysv/linux/i386/syscall.S:30
#2  0xb5b21037 in _q_futex (addr=0xaf700e78, op=0, val=2, timeout=0x0, addr2=0x0, val2=0) at thread/qmutex_unix.cpp:99
#3  0xb5b210f6 in QMutexPrivate::wait (this=0xaf700e78, timeout=-1) at thread/qmutex_unix.cpp:113
#4  0xb5b1bfbd in QMutex::lockInternal (this=0xaf7015ac) at thread/qmutex.cpp:450
#5  0xb5b1bb4b in QMutex::lock (this=0xaf7015ac) at thread/qmutex.cpp:177
#6  0xb5f7a0bf in QMutex::lockInline (this=0xaf7015ac) at /opt/project-neon/include/QtCore/qmutex.h:198
#7  0xb5f7a008 in QMutexLocker::QMutexLocker (this=0xbfb8272c, m=0xaf7015ac) at /opt/project-neon/include/QtCore/qmutex.h:109
#8  0xb5ff8b9b in KServiceTypeProfiles::clear (this=0xaf7015a8) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypeprofile.cpp:43
#9  0xb5ff8b61 in KServiceTypeProfiles::~KServiceTypeProfiles (this=0xaf7015a8, __in_chrg=<optimized out>) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypeprofile.cpp:41
#10 0xb5ff7cca in destroy () at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/services/kservicetypeprofile.cpp:60
#11 0xb5f18563 in KCleanUpGlobalStatic::~KCleanUpGlobalStatic (this=0xb6181d20, __in_chrg=<optimized out>) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdecore/kernel/kglobal.h:62
#12 0xb74aaf61 in __run_exit_handlers (status=1, listp=0xb76193e4, run_list_atexit=true) at exit.c:78
#13 0xb74aafed in __GI_exit (status=1) at exit.c:100
#14 0xb5011005 in qt_xio_errhandler () at kernel/qapplication_x11.cpp:770
#15 0xb71a3821 in KApplication::xioErrhandler (this=0xbfb83488, dpy=0x9b2f1d8) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdeui/kernel/kapplication.cpp:419
#16 0xb71a2b0c in kde_xio_errhandler (dpy=0x9b2f1d8) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdeui/kernel/kapplication.cpp:126
#17 0xb665cb84 in _XIOError (dpy=dpy@entry=0x9b2f1d8) at ../../src/XlibInt.c:1618
#18 0xb665a95e in _XReply (dpy=0x9b2f1d8, rep=0xbfb82900, extra=0, discard=0) at ../../src/xcb_io.c:707
#19 0xb61c7a18 in DRI2WaitMSC () from /usr/lib/i386-linux-gnu/mesa/libGL.so.1
#20 0xb61c5ccb in ?? () from /usr/lib/i386-linux-gnu/mesa/libGL.so.1
#21 0xb619dd23 in ?? () from /usr/lib/i386-linux-gnu/mesa/libGL.so.1
#22 0xb7713c83 in KWin::SceneOpenGL::waitSync (this=0x9b195e8) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/kwin/scene_opengl_glx.cpp:518
#23 0xb7713cd7 in KWin::SceneOpenGL::flushBuffer (this=0x9b195e8, mask=8, damage=...) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/kwin/scene_opengl_glx.cpp:542
#24 0xb7714d89 in KWin::SceneOpenGL::idle (this=0x9b195e8) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/kwin/scene_opengl.cpp:113
#25 0xb76fd568 in KWin::Workspace::performCompositing (this=0x9c175e8) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/kwin/composite.cpp:404
#26 0xb76fd4ac in KWin::Workspace::timerEvent (this=0x9c175e8, te=0xbfb83118) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/kwin/composite.cpp:391
#27 0xb5c57c52 in QObject::event (this=0x9c175e8, e=0xbfb83118) at kernel/qobject.cpp:1157
#28 0xb4f8e10c in QApplicationPrivate::notify_helper (this=0x9b1e188, receiver=0x9c175e8, e=0xbfb83118) at kernel/qapplication.cpp:4557
#29 0xb4f8ba0a in QApplication::notify (this=0xbfb83488, receiver=0x9c175e8, e=0xbfb83118) at kernel/qapplication.cpp:3939
#30 0xb71a2fd6 in KApplication::notify (this=0xbfb83488, receiver=0x9c175e8, event=0xbfb83118) at /build/buildd/project-neon-kdelibs-2+git20120717+r92858/kdeui/kernel/kapplication.cpp:311
#31 0xb76a8ff2 in KWin::Application::notify (this=0xbfb83488, o=0x9c175e8, e=0xbfb83118) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/kwin/main.cpp:371
#32 0xb5c40dca in QCoreApplication::notifyInternal (this=0xbfb83488, receiver=0x9c175e8, event=0xbfb83118) at kernel/qcoreapplication.cpp:915
#33 0xb5c44531 in QCoreApplication::sendEvent (receiver=0x9c175e8, event=0xbfb83118) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#34 0xb5c7a9bf in QTimerInfoList::activateTimers (this=0x9b1e904) at kernel/qeventdispatcher_unix.cpp:611
#35 0xb5c7b6d0 in QEventDispatcherUNIX::activateTimers (this=0x9ae8eb8) at kernel/qeventdispatcher_unix.cpp:868
#36 0xb5c7b9d8 in QEventDispatcherUNIX::processEvents (this=0x9ae8eb8, flags=...) at kernel/qeventdispatcher_unix.cpp:930
#37 0xb50586d9 in QEventDispatcherX11::processEvents (this=0x9ae8eb8, flags=...) at kernel/qeventdispatcher_x11.cpp:152
#38 0xb5c3e555 in QEventLoop::processEvents (this=0xbfb8338c, flags=...) at kernel/qeventloop.cpp:149
#39 0xb5c3e6c3 in QEventLoop::exec (this=0xbfb8338c, flags=...) at kernel/qeventloop.cpp:204
#40 0xb5c41446 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1187
#41 0xb4f8b67e in QApplication::exec () at kernel/qapplication.cpp:3818
#42 0xb76aa06d in kdemain (argc=3, argv=0xbfb83574) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/kwin/main.cpp:545
#43 0x08048691 in main (argc=3, argv=0xbfb83574) at /build/buildd/project-neon-kde-workspace-2+git20120717+r46969/obj-i686-linux-gnu/kwin/kwin_dummy.cpp:3

Reported using DrKonqi
Comment 1 Thomas Lübking 2012-07-18 11:51:08 UTC
I've seen similar  but on XRender (where it occurs more likely due to more X11 invocation)

-> https://git.reviewboard.kde.org/r/105608/
Comment 2 Thomas Lübking 2012-07-21 18:17:38 UTC
Git commit 7cf7681f1bd45e599b7bd489b7bf5944e7e54140 by Thomas Lübking.
Committed on 20/07/2012 at 22:01.
Pushed by luebking into branch 'KDE/4.9'.

move KServiceTypeTrader::query() to main thread

KConfigGroup is not the least thread safe and unfortunately
the KServiceTypeTrader::self()->query() will in doubt create
one if the sycoca database was damaged.
REVIEW: 105608
(cherry picked from commit e3edcbcf66b324febcc2014ca4c1fbfa383d8972)

M  +3    -3    kwin/scripting/scripting.cpp
M  +2    -1    kwin/scripting/scripting.h

http://commits.kde.org/kde-workspace/7cf7681f1bd45e599b7bd489b7bf5944e7e54140
Comment 3 Thomas Lübking 2012-07-21 18:34:32 UTC
Git commit e3edcbcf66b324febcc2014ca4c1fbfa383d8972 by Thomas Lübking.
Committed on 20/07/2012 at 22:01.
Pushed by luebking into branch 'master'.

move KServiceTypeTrader::query() to main thread

KConfigGroup is not the least thread safe and unfortunately
the KServiceTypeTrader::self()->query() will in doubt create
one if the sycoca database was damaged.
REVIEW: 105608

M  +3    -3    kwin/scripting/scripting.cpp
M  +2    -1    kwin/scripting/scripting.h

http://commits.kde.org/kde-workspace/e3edcbcf66b324febcc2014ca4c1fbfa383d8972