Version: SVN (using Devel) OS: Linux Occasionally (since I last updated to latest master/trunk a few days ago), Amarok and Plasma will simultaneously crash when Amarok modifies the tray icon pixmap in the pixmap crash. Amarok's backtrace: Application: Amarok (amarok), signal: Bus error [Current thread is 1 (Thread 0x7fc529082780 (LWP 3701))] (snip dull ThreadWeaver traces) Thread 1 (Thread 0x7fc529082780 (LWP 3701)): [KCrash Handler] #6 0x00007fc52578995b in memcpy () from /lib/libc.so.6 #7 0x00007fc528a98e3d in (anonymous namespace)::KPCMemoryDevice::writeData (this=0x245b1a0, data=0x2954018 "", len=5405) at /home/kde-devel/src/kdelibs/kdeui/util/kpixmapcache.cpp:217 #8 0x00007fc52607df97 in QIODevice::write(char const*, long long) () from /usr/lib/libQtCore.so.4 #9 0x00007fc52606a31a in QDataStream::writeRawData(char const*, int) () from /usr/lib/libQtCore.so.4 #10 0x00007fc52606a376 in QDataStream::writeBytes(char const*, unsigned int) () from /usr/lib/libQtCore.so.4 #11 0x00007fc528a9db94 in KPixmapCache::Private::writeData (this=0x19803f0, key=..., pix=...) at /home/kde-devel/src/kdelibs/kdeui/util/kpixmapcache.cpp:1421 #12 0x00007fc528a9d925 in KPixmapCache::insert (this=0x1980c10, key=..., pix=...) at /home/kde-devel/src/kdelibs/kdeui/util/kpixmapcache.cpp:1386 #13 0x00007fc527ef873a in SvgHandler::addBordersToPixmap (this=0x1983760, orgPixmap=..., borderWidth=5, name=..., skipCache=false) at /home/kde-devel/src/amarok/src/SvgHandler.cpp:304 #14 0x00007fc527ef7cf2 in SvgHandler::imageWithBorder (this=0x1983760, album=..., size=48, borderWidth=5) at /home/kde-devel/src/amarok/src/SvgHandler.cpp:252 #15 0x00007fc527efc94a in Amarok::TrayIcon::updateToolTipIcon (this=0x1b5d0d0) at /home/kde-devel/src/amarok/src/TrayIcon.cpp:115 #16 0x00007fc527efdf13 in Amarok::TrayIcon::trackPlaying (this=0x1b5d0d0, track=...) at /home/kde-devel/src/amarok/src/TrayIcon.cpp:198 #17 0x00007fc527efed37 in Amarok::TrayIcon::qt_metacall (this=0x1b5d0d0, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7fff3735d860) at /home/kde-devel/build/amarok/src/TrayIcon.moc:91 #18 0x00007fc5260f7e0f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #19 0x00007fc527ec41c3 in EngineController::trackPlaying (this=0x11e6c80, _t1=...) at /home/kde-devel/build/amarok/src/EngineController.moc:247 #20 0x00007fc527ec040a in EngineController::slotNewTrackPlaying (this=0x11e6c80, source=...) at /home/kde-devel/src/amarok/src/EngineController.cpp:1126 #21 0x00007fc527ec3e23 in EngineController::qt_metacall (this=0x11e6c80, _c=QMetaObject::InvokeMetaMethod, _id=40, _a=0x7fff3735db30) at /home/kde-devel/build/amarok/src/EngineController.moc:205 #22 0x00007fc5260f7e0f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #23 0x00007fc52183be85 in Phonon::MediaObject::currentSourceChanged(Phonon::MediaSource const&) () from /usr/lib/libphonon.so.4 Plasma's backtrace: Application: Plasma Desktop Shell (kdeinit4), signal: Segmentation fault [Current thread is 1 (Thread 0x7f3918ffc760 (LWP 3462))] Thread 2 (Thread 0x7f38f5bbe700 (LWP 3466)): #0 0xffffffffff60017b in ?? () #1 0x00007f38f5bbdae0 in ?? () #2 0x00007fff46dff6e2 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 1 (Thread 0x7f3918ffc760 (LWP 3462)): [KCrash Handler] #6 0x00007f39188fc6b8 in KIconEffect::fingerprint (this=0x28, group=0, state=0) at /home/kde-devel/src/kdelibs/kdeui/icons/kiconeffect.cpp:169 #7 0x00007f3918903e52 in KIconLoaderPrivate::makeCacheKey (this=0x0, name=..., group=KIconLoader::Desktop, overlays=..., size=24, state=0) at /home/kde-devel/src/kdelibs/kdeui/icons/kiconloader.cpp:767 #8 0x00007f3918905b26 in KIconLoader::loadIcon (this=0x2978120, _name=..., group=KIconLoader::Desktop, size=24, state=0, overlays=..., path_store=0x0, canReturnNull=false) at /home/kde-devel/src/kdelibs/kdeui/icons/kiconloader.cpp:1210 #9 0x00007f3918900bfb in KIconEngine::pixmap (this=0x2a56ad0, size=..., mode=QIcon::Normal, state=QIcon::Off) at /home/kde-devel/src/kdelibs/kdeui/icons/kiconengine.cpp:93 #10 0x00007f3916afffc5 in QIcon::pixmap(QSize const&, QIcon::Mode, QIcon::State) const () from /usr/lib/libQtGui.so.4 #11 0x00007f390dee731f in Plasma::IconWidgetPrivate::decoration (this=0x28eb220, option=0x18986b8, useHoverEffect=false, usePressedEffect=false) at /home/kde-devel/src/kdelibs/plasma/widgets/iconwidget.cpp:812 #12 0x00007f390dee93cf in Plasma::IconWidget::paint (this=0x29aee30, painter=0x7fff46dbfe10, option=0x18986b8, widget=0x0) at /home/kde-devel/src/kdelibs/plasma/widgets/iconwidget.cpp:1128 #13 0x00007f38fe955b71 in SystemTray::DBusSystemTrayWidget::paint (this=0x29aee30, painter=0x7fff46dbfe10, option=0x18986b8, widget=0x0) at /home/kde-devel/src/kde-workspace/plasma/generic/applets/systemtray/protocols/dbussystemtray/dbussystemtraywidget.cpp:189 #14 0x00007f3917044c6d in ?? () from /usr/lib/libQtGui.so.4 Reproducible: Sometimes
Well the problem in Plasma is that KIconLoader is in some kind of invalid state (it's KIconLoaderPrivate d-pointer is 0!) That in itself is impressive since the d pointer appears to be set very early in construction for either KIconLoader constructor, and the one modifier I see for the d pointer should crash with a non-zero pointer. Is there any particular reason Amarok uses KPixmapCache? I'm not saying you need to use KSharedDataCache by any means, but I am saying that I wrote KSharedDataCache because I couldn't figure out how to fix all the crashes in KPixmapCache. ;)
Because Amarok only depends on kdelibs 4.4.
*** This bug has been marked as a duplicate of bug 258706 ***