Summary: | Dolphin crash when opened. | ||
---|---|---|---|
Product: | [Applications] dolphin | Reporter: | rhgadsdon |
Component: | general | Assignee: | Dolphin Bug Assignee <dolphin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | cfeck, jlayt |
Priority: | NOR | ||
Version: | 2.1.97 | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/kde-baseapps/715f00a9b68ab96f040d24e0c21579c87e1851bd | Version Fixed In: | 4.10 |
Sentry Crash Report: |
Description
rhgadsdon
2013-01-05 13:21:16 UTC
Thanks for the bug report. The crash happens in the QDateTime constructor in a secondary thread, so I'm wondering if it's caused by the new parallel sorting, even though it seems unlikely at first sight, given that QDateTime is supposed to be reentrant. Two questions: 1) How many photos are exactly in that directory? Are there only photos in there, or anything else? 2) Does it only happen if you sort by 'Date', or also when sorting by other things, such as 'Name', 'Size', etc.? Hi Frank, 1) There are 4,766 files in the 'crashing' folder. Most are jpeg images, but there are about 1500 xcf / png / psd files, a couple of txt files, and one folder. 2) Tried 'sort by size', 'sort by type', 'sort by name', and everything works OK. As soon as I select 'sort by date' Dolphin crashes. 100% reproducable, for this one folder.. Other folders, with fewer files, work OK.. Workaround is to revert kde-baseapps and kde-baseapps-libs to 4.9.5.. Thanks.. Robert. On 01/05/2013 02:02 PM, Frank Reininghaus wrote: > https://bugs.kde.org/show_bug.cgi?id=312679 > > --- Comment #1 from Frank Reininghaus <frank78ac@googlemail.com> --- > Thanks for the bug report. > > The crash happens in the QDateTime constructor in a secondary thread, so I'm > wondering if it's caused by the new parallel sorting, even though it seems > unlikely at first sight, given that QDateTime is supposed to be reentrant. > > Two questions: > > 1) How many photos are exactly in that directory? Are there only photos in > there, or anything else? > 2) Does it only happen if you sort by 'Date', or also when sorting by other > things, such as 'Name', 'Size', etc.? > Thanks, but I couldn't reproduce the crash so far. In order to understand the backtrace better it might help if you could install debugging symbols for kdelibs and qt, reproduce the crash, and paste the new backtrace here. There is some info about that at http://techbase.kde.org/Development/Tutorials/Debugging/How_to_create_useful_crash_reports#Fedora Another thing that might help is to run Dolphin in Valgrind because this can provide some information about things that went wrong before the crash actually happened: valgrind dolphin 2> log.txt Note that this will slow down Dolphin considerably. Thanks for your help! OK.. I'll install the ..debuginfo rpms, and do some tests.. I've tried some more folders, and the crash only occurs with this particular one.. I'll also try creating a _new_ folder, and copying the contents across, to see if that makes any difference.. Robert. On 01/05/2013 05:53 PM, Frank Reininghaus wrote: > https://bugs.kde.org/show_bug.cgi?id=312679 > > --- Comment #3 from Frank Reininghaus <frank78ac@googlemail.com> --- > Thanks, but I couldn't reproduce the crash so far. In order to understand the > backtrace better it might help if you could install debugging symbols for > kdelibs and qt, reproduce the crash, and paste the new backtrace here. There is > some info about that at > > http://techbase.kde.org/Development/Tutorials/Debugging/How_to_create_useful_crash_reports#Fedora > > Another thing that might help is to run Dolphin in Valgrind because this can > provide some information about things that went wrong before the crash actually > happened: > > valgrind dolphin 2> log.txt > > Note that this will slow down Dolphin considerably. Thanks for your help! > Crash backtrace with debug installed: Application: Dolphin (dolphin), signal: Segmentation fault Using host libthread_db library "/lib64/libthread_db.so.1". [Current thread is 1 (Thread 0x7f950fd19880 (LWP 13424))] Thread 5 (Thread 0x7f9504e81700 (LWP 13426)): #0 0x0000003dd30e998d in poll () from /lib64/libc.so.6 #1 0x0000003dd2c47d44 in g_main_context_iterate.isra.24 () from /lib64/libglib-2.0.so.0 #2 0x0000003dd2c47e64 in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #3 0x00007f951193c0f6 in QEventDispatcherGlib::processEvents (this=0x7f95000008e0, flags=...) at kernel/qeventdispatcher_glib.cpp:426 #4 0x00007f951190c7df in QEventLoop::processEvents (this=this@entry=0x7f9504e80c10, flags=...) at kernel/qeventloop.cpp:149 #5 0x00007f951190ca68 in QEventLoop::exec (this=0x7f9504e80c10, flags=...) at kernel/qeventloop.cpp:204 #6 0x00007f951180e950 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:542 #7 0x00007f95118ed00f in QInotifyFileSystemWatcherEngine::run (this=0x1800eb0) at io/qfilesystemwatcher_inotify.cpp:256 #8 0x00007f951181192c in QThreadPrivate::start (arg=0x1800eb0) at thread/qthread_unix.cpp:338 #9 0x00000035feeaf3f4 in ?? () from /lib64/libGL.so.1 #10 0x0000003dd3807d15 in start_thread () from /lib64/libpthread.so.0 #11 0x0000003dd30f246d in clone () from /lib64/libc.so.6 Thread 4 (Thread 0x7f94ffb1f700 (LWP 13432)): #0 0x0000003dd380b952 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f9511811de7 in wait (time=30000, this=0x28c0f00) at thread/qwaitcondition_unix.cpp:84 #2 QWaitCondition::wait (this=<optimized out>, mutex=0x28c0e78, time=30000) at thread/qwaitcondition_unix.cpp:158 #3 0x00007f951180566f in QThreadPoolThread::run (this=0x28c0fe0) at concurrent/qthreadpool.cpp:141 #4 0x00007f951181192c in QThreadPrivate::start (arg=0x28c0fe0) at thread/qthread_unix.cpp:338 #5 0x00000035feeaf3f4 in ?? () from /lib64/libGL.so.1 #6 0x0000003dd3807d15 in start_thread () from /lib64/libpthread.so.0 #7 0x0000003dd30f246d in clone () from /lib64/libc.so.6 Thread 3 (Thread 0x7f94ff31e700 (LWP 13433)): #0 0x0000003dd380b952 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f9511811de7 in wait (time=30000, this=0x28c0f00) at thread/qwaitcondition_unix.cpp:84 #2 QWaitCondition::wait (this=<optimized out>, mutex=0x28c0e78, time=30000) at thread/qwaitcondition_unix.cpp:158 #3 0x00007f951180566f in QThreadPoolThread::run (this=0x28c1760) at concurrent/qthreadpool.cpp:141 #4 0x00007f951181192c in QThreadPrivate::start (arg=0x28c1760) at thread/qthread_unix.cpp:338 #5 0x00000035feeaf3f4 in ?? () from /lib64/libGL.so.1 #6 0x0000003dd3807d15 in start_thread () from /lib64/libpthread.so.0 #7 0x0000003dd30f246d in clone () from /lib64/libc.so.6 Thread 2 (Thread 0x7f94feb1d700 (LWP 13434)): #0 0x0000003dd380b952 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f9511811de7 in wait (time=30000, this=0x28c0f00) at thread/qwaitcondition_unix.cpp:84 #2 QWaitCondition::wait (this=<optimized out>, mutex=0x28c0e78, time=30000) at thread/qwaitcondition_unix.cpp:158 #3 0x00007f951180566f in QThreadPoolThread::run (this=0x7f94f0002b90) at concurrent/qthreadpool.cpp:141 #4 0x00007f951181192c in QThreadPrivate::start (arg=0x7f94f0002b90) at thread/qthread_unix.cpp:338 #5 0x00000035feeaf3f4 in ?? () from /lib64/libGL.so.1 #6 0x0000003dd3807d15 in start_thread () from /lib64/libpthread.so.0 #7 0x0000003dd30f246d in clone () from /lib64/libc.so.6 Thread 1 (Thread 0x7f950fd19880 (LWP 13424)): [KCrash Handler] #6 KTimeZone::Transition::time (this=0x0) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/ktimezone.cpp:277 #7 0x000000366c6f80c7 in KTimeZoneDataPrivate::transitionIndex (this=0x1aea010, dt=...) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/ktimezone.cpp:1088 #8 0x000000366c6f9a76 in KTimeZoneData::transitionIndex (this=0x14bc4f0, dt=..., secondIndex=0x7fff22b6843c, validTime=0x7fff22b6843b) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/ktimezone.cpp:1287 #9 0x000000366c6fa9eb in offsetAtZoneTime (secondOffset=0x7fff22b684fc, zoneDateTime=..., caller=0x28a2af0, this=0x28a27a0) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/ktimezone.cpp:516 #10 KTimeZoneBackend::offsetAtZoneTime (this=0x28a27a0, caller=0x28a2af0, zoneDateTime=..., secondOffset=0x7fff22b684fc) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/ktimezone.cpp:467 #11 0x000000366c6e48b4 in timeZoneOffset (this=0x28a2ae0) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/kdatetime.cpp:606 #12 KDateTimePrivate::timeZoneOffset (this=0x28a2ae0) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/kdatetime.cpp:592 #13 0x000000366c6e4bcc in KDateTimePrivate::toUtc (this=0x28a2ae0, local=...) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/kdatetime.cpp:693 #14 0x000000366c6e8305 in KDateTime::operator< (this=0x7fff22b68680, other=...) at /usr/src/debug/kdelibs-4.9.97/kdecore/date/kdatetime.cpp:1431 #15 0x00007f9513382be3 in KFileItemModel::sortRoleCompare (this=this@entry=0x18ea720, a=a@entry=0x28b5300, b=b@entry=0x28a2700) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/kfileitemmodel.cpp:1396 #16 0x00007f9513383820 in KFileItemModel::lessThan (this=0x18ea720, a=0x28b5300, b=0x28a2700) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/kfileitemmodel.cpp:1344 #17 0x00007f95133b29b9 in KFileItemModelSortAlgorithm::upperBound (model=model@entry=0x18ea720, begin=..., end=..., value=0x28b5300) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:161 #18 0x00007f95133b2af9 in KFileItemModelSortAlgorithm::merge (model=model@entry=0x18ea720, begin=..., pivot=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:106 #19 0x00007f95133b2b84 in KFileItemModelSortAlgorithm::merge (model=model@entry=0x18ea720, begin=..., pivot=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:114 #20 0x00007f95133b2b84 in KFileItemModelSortAlgorithm::merge (model=model@entry=0x18ea720, begin=..., pivot=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:114 #21 0x00007f95133b2bb0 in KFileItemModelSortAlgorithm::merge (model=model@entry=0x18ea720, begin=..., pivot=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:115 #22 0x00007f95133b2b84 in KFileItemModelSortAlgorithm::merge (model=model@entry=0x18ea720, begin=..., pivot=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:114 #23 0x00007f95133b2b84 in KFileItemModelSortAlgorithm::merge (model=model@entry=0x18ea720, begin=..., pivot=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:114 #24 0x00007f95133b2b84 in KFileItemModelSortAlgorithm::merge (model=model@entry=0x18ea720, begin=..., pivot=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:114 #25 0x00007f95133b2d1d in KFileItemModelSortAlgorithm::sequentialSort (model=model@entry=0x18ea720, begin=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:48 #26 0x00007f95133b2cf3 in KFileItemModelSortAlgorithm::sequentialSort (model=model@entry=0x18ea720, begin=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:47 #27 0x00007f95133b2cf3 in KFileItemModelSortAlgorithm::sequentialSort (model=model@entry=0x18ea720, begin=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:47 #28 0x00007f95133b2cf3 in KFileItemModelSortAlgorithm::sequentialSort (model=model@entry=0x18ea720, begin=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:47 #29 0x00007f95133b2d9f in KFileItemModelSortAlgorithm::parallelSort (model=model@entry=0x18ea720, begin=..., end=..., numberOfThreads=numberOfThreads@entry=1) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:69 #30 0x00007f95133b2e99 in KFileItemModelSortAlgorithm::parallelSort (model=model@entry=0x18ea720, begin=..., end=..., numberOfThreads=numberOfThreads@entry=2) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:63 #31 0x00007f95133b2e99 in KFileItemModelSortAlgorithm::parallelSort (model=0x18ea720, begin=..., end=..., numberOfThreads=<optimized out>) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:63 #32 0x00007f95133b2f23 in KFileItemModelSortAlgorithm::sort (model=<optimized out>, begin=..., end=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp:30 #33 0x00007f951338395b in KFileItemModel::insertItems (this=0x18ea720, items=...) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/kfileitemmodel.cpp:944 #34 0x00007f9513383ccf in dispatchPendingItemsToInsert (this=<optimized out>) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/kfileitemmodel.cpp:916 #35 KFileItemModel::dispatchPendingItemsToInsert (this=0x7fff22b68340) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/kfileitemmodel.cpp:913 #36 0x00007f9513383d34 in KFileItemModel::slotCompleted (this=0x18ea720) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/kitemviews/kfileitemmodel.cpp:688 #37 0x00007f9511922ebf in QMetaObject::activate (sender=0x18ea8e0, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff22b69200) at kernel/qobject.cpp:3539 #38 0x000000366e110ca5 in KDirLister::completed (this=this@entry=0x18ea8e0, _t1=...) at /usr/src/debug/kdelibs-4.9.97/x86_64-redhat-linux-gnu/kio/kdirlister.moc:233 #39 0x000000366e11e0b8 in KDirListerCache::slotResult (this=0x180ebc0, j=<optimized out>) at /usr/src/debug/kdelibs-4.9.97/kio/kio/kdirlister.cpp:1316 #40 0x00007f9511922ebf in QMetaObject::activate (sender=0x1ab1e30, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff22b69440) at kernel/qobject.cpp:3539 #41 0x000000366c734142 in KJob::result (this=this@entry=0x1ab1e30, _t1=_t1@entry=0x1ab1e30) at /usr/src/debug/kdelibs-4.9.97/x86_64-redhat-linux-gnu/kdecore/kjob.moc:207 #42 0x000000366c734180 in KJob::emitResult (this=0x1ab1e30) at /usr/src/debug/kdelibs-4.9.97/kdecore/jobs/kjob.cpp:318 #43 0x000000366e0f7285 in KIO::SimpleJob::slotFinished (this=this@entry=0x1ab1e30) at /usr/src/debug/kdelibs-4.9.97/kio/kio/job.cpp:494 #44 0x000000366e0fb38b in KIO::ListJob::slotFinished (this=0x1ab1e30) at /usr/src/debug/kdelibs-4.9.97/kio/kio/job.cpp:2688 #45 0x00007f9511922ebf in QMetaObject::activate (sender=0x165ca60, m=<optimized out>, local_signal_index=<optimized out>, argv=0x0) at kernel/qobject.cpp:3539 #46 0x000000366e19a011 in KIO::SlaveInterface::dispatch (this=0x165ca60, _cmd=104, rawdata=...) at /usr/src/debug/kdelibs-4.9.97/kio/kio/slaveinterface.cpp:172 #47 0x000000366e1970ea in KIO::SlaveInterface::dispatch (this=0x165ca60) at /usr/src/debug/kdelibs-4.9.97/kio/kio/slaveinterface.cpp:88 #48 0x000000366e18b64e in KIO::Slave::gotInput (this=0x165ca60) at /usr/src/debug/kdelibs-4.9.97/kio/kio/slave.cpp:344 #49 0x00007f9511922ebf in QMetaObject::activate (sender=0x165e4a0, m=<optimized out>, local_signal_index=<optimized out>, argv=0x0) at kernel/qobject.cpp:3539 #50 0x000000366e0cc1e2 in dequeue (this=<optimized out>) at /usr/src/debug/kdelibs-4.9.97/kio/kio/connection.cpp:82 #51 KIO::ConnectionPrivate::dequeue (this=0x19619c0) at /usr/src/debug/kdelibs-4.9.97/kio/kio/connection.cpp:71 #52 0x00007f951192239e in QObject::event (this=0x165e4a0, e=<optimized out>) at kernel/qobject.cpp:1194 #53 0x00007f951208d5cc in QApplicationPrivate::notify_helper (this=this@entry=0x14bfd40, receiver=receiver@entry=0x165e4a0, e=e@entry=0x17d5ec0) at kernel/qapplication.cpp:4562 #54 0x00007f9512091a4a in QApplication::notify (this=0x7fff22b6a550, receiver=0x165e4a0, e=0x17d5ec0) at kernel/qapplication.cpp:4423 #55 0x000000366ce46f26 in KApplication::notify (this=0x7fff22b6a550, receiver=0x165e4a0, event=0x17d5ec0) at /usr/src/debug/kdelibs-4.9.97/kdeui/kernel/kapplication.cpp:311 #56 0x00007f951190da8e in QCoreApplication::notifyInternal (this=0x7fff22b6a550, receiver=receiver@entry=0x165e4a0, event=event@entry=0x17d5ec0) at kernel/qcoreapplication.cpp:946 #57 0x00007f9511911541 in sendEvent (event=0x17d5ec0, receiver=0x165e4a0) at kernel/qcoreapplication.h:231 #58 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x14867a0) at kernel/qcoreapplication.cpp:1570 #59 0x00007f951193bf43 in sendPostedEvents () at kernel/qcoreapplication.h:236 #60 postEventSourceDispatch (s=0x14bb850) at kernel/qeventdispatcher_glib.cpp:279 #61 0x0000003dd2c47a75 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0 #62 0x0000003dd2c47da8 in g_main_context_iterate.isra.24 () from /lib64/libglib-2.0.so.0 #63 0x0000003dd2c47e64 in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #64 0x00007f951193c0d6 in QEventDispatcherGlib::processEvents (this=0x1488080, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #65 0x00007f951212d73e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:207 #66 0x00007f951190c7df in QEventLoop::processEvents (this=this@entry=0x7fff22b6a410, flags=...) at kernel/qeventloop.cpp:149 #67 0x00007f951190ca68 in QEventLoop::exec (this=0x7fff22b6a410, flags=...) at kernel/qeventloop.cpp:204 #68 0x00007f9511911858 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1218 #69 0x00007f95136595d7 in kdemain (argc=6, argv=0x7fff22b6a688) at /usr/src/debug/kde-baseapps-4.9.97/dolphin/src/main.cpp:90 #70 0x0000003dd3021a05 in __libc_start_main () from /lib64/libc.so.6 #71 0x00000000004008d1 in _start () When I ran # valgrind dolphin 2> log.txt, dolphin did not crash when I opened the offending folder - in 'sort by date' order.. Valgrind output: ==13524== Memcheck, a memory error detector ==13524== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==13524== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==13524== Command: dolphin ==13524== dolphin(13524) KXMLGUI::ActionList::plug: Index 19 is not within range (0 - 11 ==13524== Invalid read of size 8 ==13524== at 0x5B5482A: qt_blend_argb32_on_argb32_ssse3(unsigned char*, int, unsigned char const*, int, int, int, int) (qdrawhelper_ssse3.cpp:179) ==13524== by 0x5D1E4FC: QRasterPaintEngine::drawImage(QPointF const&, QImage const&) (qpaintengine_raster.cpp:2182) ==13524== by 0x5D27F95: QRasterPaintEngine::drawPixmap(QPointF const&, QPixmap const&) (qpaintengine_raster.cpp:2057) ==13524== by 0x5CAA81C: QPainter::drawPixmap(QPointF const&, QPixmap const&) (qpainter.cpp:5344) ==13524== by 0xFC6B733: ??? (in /usr/lib64/kde4/plugins/styles/oxygen.so) ==13524== by 0x5BABEFD: QWidget::event(QEvent*) (qwidget.cpp:8532) ==13524== by 0x5B5C5CB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4562) ==13524== by 0x5B60A49: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4423) ==13524== by 0x366CE46F25: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:311) ==13524== by 0x6A02A8D: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:946) ==13524== by 0x5BA7AC3: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:234) ==13524== by 0x5BA85BE: QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qwidget.cpp:5807) ==13524== Address 0x17c84228 is 63,016 bytes inside a block of size 63,020 alloc'd ==13524== at 0x4A0883C: malloc (vg_replace_malloc.c:270) ==13524== by 0x5C127E5: QImageData::create(QSize const&, QImage::Format, int) (qimage.cpp:209) ==13524== by 0x5C12D1A: QImage::QImage(int, int, QImage::Format) (qimage.cpp:811) ==13524== by 0x5C3A036: QRasterPixmapData::resize(int, int) (qpixmap_raster.cpp:122) ==13524== by 0x5C2C67D: QPixmap::fill(QColor const&) (qpixmap.cpp:1033) ==13524== by 0xFC6B657: ??? (in /usr/lib64/kde4/plugins/styles/oxygen.so) ==13524== by 0x5BABEFD: QWidget::event(QEvent*) (qwidget.cpp:8532) ==13524== by 0x5B5C5CB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:4562) ==13524== by 0x5B60A49: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:4423) ==13524== by 0x366CE46F25: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:311) ==13524== by 0x6A02A8D: QCoreApplication::notifyInternal(QObject*, QEvent*) (qcoreapplication.cpp:946) ==13524== by 0x5BA7AC3: QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) (qcoreapplication.h:234) ==13524== ==13524== ==13524== HEAP SUMMARY: ==13524== in use at exit: 399,426 bytes in 3,728 blocks ==13524== total heap usage: 4,713,256 allocs, 4,709,528 frees, 1,919,214,116 bytes allocated ==13524== ==13524== LEAK SUMMARY: ==13524== definitely lost: 3,176 bytes in 29 blocks ==13524== indirectly lost: 31,384 bytes in 146 blocks ==13524== possibly lost: 18,464 bytes in 47 blocks ==13524== still reachable: 346,402 bytes in 3,506 blocks ==13524== suppressed: 0 bytes in 0 blocks ==13524== Rerun with --leak-check=full to see details of leaked memory ==13524== ==13524== For counts of detected and suppressed errors, rerun with: -v ==13524== ERROR SUMMARY: 318 errors from 1 contexts (suppressed: 2 from 2) Well, QDateTime is reentrant, but KFileItem sorting uses KDateTime, which calls into KTimeZoneBackend. Not sure if those are reentrant. Adding John. > Well, QDateTime is reentrant, but KFileItem sorting uses KDateTime, which
> calls into KTimeZoneBackend. Not sure if those are reentrant.
Well, if they are not (it would be nice if John could confirm this), we could just disable parallel sorting for the case that the items are not sorted by name. Natural sorting by name is by far the most expensive.
Another workaround might be to use KFileItem's time method that returns a time_t. That should be sufficient to find out which file is older, but that method is deprecated.
What I first found a bit strange is that KDateTimePrivate::toUtc() does not get called at all on my system from operator < (i.e., during sorting). But looking at the code of
KDateTime::operator<(const KDateTime &other),
it seems that this can indeed happen if there are multiple files which were created close to a shift to/from daylight saving time.
Git commit 715f00a9b68ab96f040d24e0c21579c87e1851bd by Frank Reininghaus. Committed on 11/01/2013 at 16:57. Pushed by freininghaus into branch 'KDE/4.10'. Only use parallel sorting when sorting by name The reentrant natural comparison of strings is the only really expensive operation. Other comparison functions are much cheaper and might not be reentrant at all. Therefore, we disable parallel sorting when not sorting by name to prevent crashes and other unpleasant behaviour. FIXED-IN: 4.10 REVIEW: 108309 M +11 -2 dolphin/src/kitemviews/private/kfileitemmodelsortalgorithm.cpp http://commits.kde.org/kde-baseapps/715f00a9b68ab96f040d24e0c21579c87e1851bd |