Bug 274252

Summary: Dolphin crashes when entering a directory that contains items having customized icons
Product: [Unmaintained] kdelibs Reporter: Frédéric Virot <frederic.virot>
Component: kshareddatacacheAssignee: kdelibs bugs <kdelibs-bugs>
Status: RESOLVED FIXED    
Severity: crash CC: cfeck, mpyne
Priority: NOR    
Version: 4.6   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In: 4.8.4
Sentry Crash Report:

Description Frédéric Virot 2011-05-27 07:33:26 UTC
Application: dolphin (1.6.1)
KDE Platform Version: 4.6.2 (4.6.2)
Qt Version: 4.7.2
Operating System: Linux 2.6.38-8-generic-pae i686
Distribution: Ubuntu 11.04

-- Information about the crash:
- What I was doing when the application crashed:
I was browsing the file system, in my home directory

- Custom settings of the application:
the directories that were being entered at crash time contain quite a few sub-directories (ca 40) each with a different customized icon.

The crash can be reproduced every time.

-- Backtrace:
Application: Dolphin (dolphin), signal: Bus error
[Current thread is 1 (Thread 0xb4d92a20 (LWP 2119))]

Thread 3 (Thread 0xb27c9b70 (LWP 2120)):
#0  0xb5547332 in pthread_mutex_lock () from /lib/i386-linux-gnu/libpthread.so.0
#1  0xb77df616 in pthread_mutex_lock () from /lib/i386-linux-gnu/libc.so.6
#2  0xb54905a8 in g_main_context_acquire () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0xb5491dde in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0xb5492524 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5  0xb5e77577 in QEventDispatcherGlib::processEvents (this=0x954a3b8, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#6  0xb5e49289 in QEventLoop::processEvents (this=0xb27c9290, flags=...) at kernel/qeventloop.cpp:149
#7  0xb5e49522 in QEventLoop::exec (this=0xb27c9290, flags=...) at kernel/qeventloop.cpp:201
#8  0xb5d532a0 in QThread::exec (this=0x95817f0) at thread/qthread.cpp:492
#9  0xb5e2afdb in QInotifyFileSystemWatcherEngine::run (this=0x95817f0) at io/qfilesystemwatcher_inotify.cpp:248
#10 0xb5d55da2 in QThreadPrivate::start (arg=0x95817f0) at thread/qthread_unix.cpp:320
#11 0xb5544e99 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#12 0xb77d173e in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 2 (Thread 0xb0be2b70 (LWP 2125)):
#0  0xb52fdd41 in clock_gettime () from /lib/i386-linux-gnu/librt.so.1
#1  0xb5dabdd8 in do_gettime () at tools/qelapsedtimer_unix.cpp:123
#2  qt_gettime () at tools/qelapsedtimer_unix.cpp:140
#3  0xb5e784f2 in updateCurrentTime (this=0x9512b8c, tm=...) at kernel/qeventdispatcher_unix.cpp:339
#4  QTimerInfoList::timerWait (this=0x9512b8c, tm=...) at kernel/qeventdispatcher_unix.cpp:442
#5  0xb5e76d32 in timerSourcePrepareHelper (src=<value optimized out>, timeout=0xb0be20dc) at kernel/qeventdispatcher_glib.cpp:136
#6  0xb5e76dcd in timerSourcePrepare (source=0x9512b58, timeout=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#7  0xb5490fd4 in g_main_context_prepare () from /lib/i386-linux-gnu/libglib-2.0.so.0
#8  0xb5491e63 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#9  0xb5492524 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#10 0xb5e77577 in QEventDispatcherGlib::processEvents (this=0x9897228, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#11 0xb5e49289 in QEventLoop::processEvents (this=0xb0be2290, flags=...) at kernel/qeventloop.cpp:149
#12 0xb5e49522 in QEventLoop::exec (this=0xb0be2290, flags=...) at kernel/qeventloop.cpp:201
#13 0xb5d532a0 in QThread::exec (this=0x98eaec0) at thread/qthread.cpp:492
#14 0xb5e2afdb in QInotifyFileSystemWatcherEngine::run (this=0x98eaec0) at io/qfilesystemwatcher_inotify.cpp:248
#15 0xb5d55da2 in QThreadPrivate::start (arg=0x98eaec0) at thread/qthread_unix.cpp:320
#16 0xb5544e99 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#17 0xb77d173e in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 1 (Thread 0xb4d92a20 (LWP 2119)):
[KCrash Handler]
#7  0xb7819171 in ?? () from /lib/i386-linux-gnu/libc.so.6
#8  0xb61b3c96 in operator int (this=0x94ff128, key=..., data=...) at /usr/include/bits/string3.h:52
#9  cachePageSize (this=0x94ff128, key=..., data=...) at ../../kdecore/util/kshareddatacache.cpp:361
#10 page (this=0x94ff128, key=..., data=...) at ../../kdecore/util/kshareddatacache.cpp:481
#11 page (this=0x94ff128, key=..., data=...) at ../../kdecore/util/kshareddatacache.cpp:511
#12 KSharedDataCache::insert (this=0x94ff128, key=..., data=...) at ../../kdecore/util/kshareddatacache.cpp:1446
#13 0xb6e03730 in KIconLoaderPrivate::insertCachedPixmapWithPath (this=0x94ffa48, key=..., data=..., path=...) at ../../kdeui/icons/kiconloader.cpp:841
#14 0xb6e0694f in KIconLoader::loadIcon (this=0x9556a98, _name=..., group=KIconLoader::Desktop, size=128, state=0, overlays=..., path_store=0x0, canReturnNull=false) at ../../kdeui/icons/kiconloader.cpp:1319
#15 0xb6dfdd76 in KIconEngine::pixmap (this=0x9986f08, size=..., mode=QIcon::Normal, state=QIcon::Off) at ../../kdeui/icons/kiconengine.cpp:93
#16 0xb63dcca2 in QIcon::pixmap (this=0xbfd43590, size=..., mode=QIcon::Normal, state=QIcon::Off) at image/qicon.cpp:676
#17 0xb713839d in KFileItemDelegate::paint (this=0x986af48, painter=0xbfd43abc, option=..., index=...) at ../../kio/kio/kfileitemdelegate.cpp:1278
#18 0xb75964e6 in ?? () from /usr/lib/libdolphinprivate.so.4
#19 0xb68c1177 in QListView::paintEvent (this=0x9860768, e=0xbfd44694) at itemviews/qlistview.cpp:1044
#20 0xb6e2cafc in KCategorizedView::paintEvent (this=0x9860768, event=0xbfd44694) at ../../kdeui/itemviews/kcategorizedview.cpp:762
#21 0xb637f18e in QWidget::event (this=0x9860768, event=0xbfd44694) at kernel/qwidget.cpp:8405
#22 0xb6770f63 in QFrame::event (this=0x9860768, e=0xbfd44694) at widgets/qframe.cpp:557
#23 0xb67ff5d2 in QAbstractScrollArea::viewportEvent (this=0x9860768, e=0xbfd44694) at widgets/qabstractscrollarea.cpp:1043
#24 0xb689e797 in QAbstractItemView::viewportEvent (this=0x9860768, event=0xbfd44694) at itemviews/qabstractitemview.cpp:1628
#25 0xb6801ed5 in viewportEvent (this=0x9862498, o=0x9861e78, e=0xbfd44694) at widgets/qabstractscrollarea_p.h:100
#26 QAbstractScrollAreaFilter::eventFilter (this=0x9862498, o=0x9861e78, e=0xbfd44694) at widgets/qabstractscrollarea_p.h:116
#27 0xb5e4a25a in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x94a9b98, receiver=0x9861e78, event=0xbfd44694) at kernel/qcoreapplication.cpp:846
#28 0xb6326d00 in QApplicationPrivate::notify_helper (this=0x94a9b98, receiver=0x9861e78, e=0xbfd44694) at kernel/qapplication.cpp:4458
#29 0xb632b97b in QApplication::notify (this=0xbfd46d30, receiver=0x9861e78, e=0xbfd44694) at kernel/qapplication.cpp:4427
#30 0xb6e583ca in KApplication::notify (this=0xbfd46d30, receiver=0x9861e78, event=0xbfd44694) at ../../kdeui/kernel/kapplication.cpp:311
#31 0xb5e4a0bb in QCoreApplication::notifyInternal (this=0xbfd46d30, receiver=0x9861e78, event=0xbfd44694) at kernel/qcoreapplication.cpp:731
#32 0xb637bf0c in sendSpontaneousEvent (this=0x9862858, pdev=0x951df14, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:218
#33 QWidgetPrivate::drawWidget (this=0x9862858, pdev=0x951df14, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5492
#34 0xb637cb7c in QWidgetPrivate::paintSiblingsRecursive (this=0x9862560, pdev=0x951df14, siblings=..., index=<value optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5699
#35 0xb637ca42 in QWidgetPrivate::paintSiblingsRecursive (this=0x9862560, pdev=0x951df14, siblings=..., index=12, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5686
#36 0xb637ca42 in QWidgetPrivate::paintSiblingsRecursive (this=0x9862560, pdev=0x951df14, siblings=..., index=13, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5686
#37 0xb637ca42 in QWidgetPrivate::paintSiblingsRecursive (this=0x9862560, pdev=0x951df14, siblings=..., index=14, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5686
#38 0xb637ca42 in QWidgetPrivate::paintSiblingsRecursive (this=0x9862560, pdev=0x951df14, siblings=..., index=15, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5686
#39 0xb637ca42 in QWidgetPrivate::paintSiblingsRecursive (this=0x9862560, pdev=0x951df14, siblings=..., index=16, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5686
#40 0xb637bc80 in QWidgetPrivate::drawWidget (this=0x9862560, pdev=0x951df14, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5545
#41 0xb637cb7c in QWidgetPrivate::paintSiblingsRecursive (this=0x985fff8, pdev=0x951df14, siblings=..., index=<value optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5699
#42 0xb637bc80 in QWidgetPrivate::drawWidget (this=0x985fff8, pdev=0x951df14, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5545
#43 0xb637cb7c in QWidgetPrivate::paintSiblingsRecursive (this=0x983e8f0, pdev=0x951df14, siblings=..., index=<value optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5699
#44 0xb637ca42 in QWidgetPrivate::paintSiblingsRecursive (this=0x983e8f0, pdev=0x951df14, siblings=..., index=5, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5686
#45 0xb637ca42 in QWidgetPrivate::paintSiblingsRecursive (this=0x983e8f0, pdev=0x951df14, siblings=..., index=7, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5686
#46 0xb637bc80 in QWidgetPrivate::drawWidget (this=0x983e8f0, pdev=0x951df14, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5545
#47 0xb637cb7c in QWidgetPrivate::paintSiblingsRecursive (this=0x983e780, pdev=0x951df14, siblings=..., index=<value optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5699
#48 0xb637bc80 in QWidgetPrivate::drawWidget (this=0x983e780, pdev=0x951df14, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5545
#49 0xb637cb7c in QWidgetPrivate::paintSiblingsRecursive (this=0x97cb130, pdev=0x951df14, siblings=..., index=<value optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5699
#50 0xb637bc80 in QWidgetPrivate::drawWidget (this=0x97cb130, pdev=0x951df14, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5545
#51 0xb637cb7c in QWidgetPrivate::paintSiblingsRecursive (this=0x949f958, pdev=0x951df14, siblings=..., index=<value optimized out>, rgn=..., offset=..., flags=4, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5699
#52 0xb637bc80 in QWidgetPrivate::drawWidget (this=0x949f958, pdev=0x951df14, rgn=..., offset=..., flags=5, sharedPainter=0x0, backingStore=0x97ad438) at kernel/qwidget.cpp:5545
#53 0xb6557908 in QWidgetBackingStore::sync (this=0x97ad438) at painting/qbackingstore.cpp:1333
#54 0xb6371843 in QWidgetPrivate::syncBackingStore (this=0x949f958) at kernel/qwidget.cpp:1842
#55 0xb637f7e5 in QWidget::event (this=0x9497220, event=0x9aad498) at kernel/qwidget.cpp:8552
#56 0xb678da97 in QMainWindow::event (this=0x9497220, event=0x9aad498) at widgets/qmainwindow.cpp:1480
#57 0xb6f332bc in KMainWindow::event (this=0x9497220, ev=0x9aad498) at ../../kdeui/widgets/kmainwindow.cpp:1100
#58 0xb6f73b5f in KXmlGuiWindow::event (this=0x9497220, ev=0x9aad498) at ../../kdeui/xmlgui/kxmlguiwindow.cpp:126
#59 0xb6326d24 in QApplicationPrivate::notify_helper (this=0x94a9b98, receiver=0x9497220, e=0x9aad498) at kernel/qapplication.cpp:4462
#60 0xb632b97b in QApplication::notify (this=0xbfd46d30, receiver=0x9497220, e=0x9aad498) at kernel/qapplication.cpp:4427
#61 0xb6e583ca in KApplication::notify (this=0xbfd46d30, receiver=0x9497220, event=0x9aad498) at ../../kdeui/kernel/kapplication.cpp:311
#62 0xb5e4a0bb in QCoreApplication::notifyInternal (this=0xbfd46d30, receiver=0x9497220, event=0x9aad498) at kernel/qcoreapplication.cpp:731
#63 0xb5e4dc79 in sendEvent (receiver=0x0, event_type=0, data=0x946f8b8) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#64 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x946f8b8) at kernel/qcoreapplication.cpp:1372
#65 0xb5e4de0d in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1265
#66 0xb5e773c4 in sendPostedEvents (s=0x94ac368) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#67 postEventSourceDispatch (s=0x94ac368) at kernel/qeventdispatcher_glib.cpp:277
#68 0xb5491aa8 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#69 0xb5492270 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#70 0xb5492524 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#71 0xb5e7753c in QEventDispatcherGlib::processEvents (this=0x946f410, flags=...) at kernel/qeventdispatcher_glib.cpp:422
#72 0xb63da775 in QGuiEventDispatcherGlib::processEvents (this=0x946f410, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#73 0xb5e49289 in QEventLoop::processEvents (this=0xbfd46c84, flags=...) at kernel/qeventloop.cpp:149
#74 0xb5e49522 in QEventLoop::exec (this=0xbfd46c84, flags=...) at kernel/qeventloop.cpp:201
#75 0xb5e4decc in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1008
#76 0xb63248e7 in QApplication::exec () at kernel/qapplication.cpp:3736
#77 0xb78aae8d in kdemain () from /usr/lib/kde4/libkdeinit/libkdeinit4_dolphin.so
#78 0x080485bb in _start ()

Possible duplicates by query: bug 268940, bug 263580, bug 243573.

Reported using DrKonqi
Comment 1 Michael Pyne 2012-05-21 03:22:24 UTC
Git commit 561e6494bdd9a02cc8feef649f7dbbd40a1456c3 by Michael Pyne.
Committed on 20/05/2012 at 00:13.
Pushed by mpyne into branch 'KDE/4.8'.

kshareddatacache: Validate cache page size.

This commit ensures that the cache page size is actually a power-of-2
and within the band of possible sizes that could possibly have been set.

If this is not the case the cache is assumed corrupted and reset.

This should help with any cache-corruption bugs caused by a wrong cache
page size (although these don't exactly make themselves obvious). More
fixes to follow...

This one /should/ fix 274252 outright and may be of interest to several
others.
Related: bug 249362, bug 253665, bug 243573, bug 281217, bug 297815, bug 293954, bug 293447, bug 270915, bug 255233
FIXED-IN:4.8.4

M  +26   -1    kdecore/util/kshareddatacache.cpp

http://commits.kde.org/kdelibs/561e6494bdd9a02cc8feef649f7dbbd40a1456c3