Bug 268180

Summary: Occasional crash in Plasma and Amarok when updating system tray icon
Product: [Frameworks and Libraries] kdelibs Reporter: Alex Merry <alex.merry>
Component: kshareddatacacheAssignee: kdelibs bugs <kdelibs-bugs>
Severity: crash CC: asraniel, mpyne
Priority: NOR    
Version: SVN   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Alex Merry 2011-03-11 02:15:15 UTC
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
Comment 1 Michael Pyne 2011-03-11 03:13:12 UTC
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. ;)
Comment 2 Alex Merry 2011-03-11 14:32:23 UTC
Because Amarok only depends on kdelibs 4.4.
Comment 3 Beat Wolf 2011-04-11 23:20:17 UTC

*** This bug has been marked as a duplicate of bug 258706 ***