Summary: | dolphin crash during moving/copying several files | ||
---|---|---|---|
Product: | [Applications] dolphin | Reporter: | Simon Andric <simonandric5> |
Component: | general | Assignee: | Dolphin Bug Assignee <dolphin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | Keywords: | drkonqi |
Priority: | NOR | ||
Version: | 4.12.95 | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/kde-baseapps/80b7aada681ec24d849f8860405a251ec2771380 | Version Fixed In: | 4.13.0 |
Description
Simon Andric
2014-03-29 02:46:36 UTC
Thanks for the bug report. Looks like it crashes in a secondary thread that is counting the items inside subfolders (either for the "Size" column in Details View or to determine if a subfolder can be expanded in Details View or in the Folders Panel).
> [KCrash Handler]
> #6 0x00007ffc68c28607 in isSignalConnected (signal_index=2, this=0x0) at
> kernel/qobject_p.h:237
> #7 QMetaObject::activate (sender=sender@entry=0x182baf0,
> m=m@entry=0x7ffc6c16b9c0
> <KDirectoryContentsCounterWorker::staticMetaObject>,
> local_signal_index=local_signal_index@entry=0,
> argv=argv@entry=0x7ffc414cc7d0) at kernel/qobject.cpp:3444
> #8 0x00007ffc6bedb0a3 in KDirectoryContentsCounterWorker::result
> (this=this@entry=0x182baf0, _t1=..., _t2=6530) at
> moc_kdirectorycontentscounterworker.cpp:105
> #9 0x00007ffc6bf1a899 in
> KDirectoryContentsCounterWorker::countDirectoryContents (this=0x182baf0,
> path=..., options=...) at
> ../../../dolphin/src/kitemviews/private/kdirectorycontentscounterworker.cpp:
> 94
Hm, strange. Maybe the KDirectoryContentsCounterWorker was deleted while its countDirectoryContents() method was being executed? I thought that I had added some code that protects against this kind of thing, but I'll try to have a closer look soon.
Ouch. In KDirectoryContentsCounter::~KDirectoryContentsCounter(), we just call delete m_worker; which could delete the "worker" while it is still running. Only if the worker is the only one remaining the the thread which is shared by the workers for all views, we wait until the thread has finished. Replacing the above line by m_worker->deleteLater(); should ensure that the worker object is not deleted while it is still working. Git commit 80b7aada681ec24d849f8860405a251ec2771380 by Frank Reininghaus. Committed on 03/04/2014 at 07:03. Pushed by freininghaus into branch 'KDE/4.13'. KDirectoryContentsCounter: do not delete currently active worker objects Before this patch, the destructor of KDirectoryContentsCounter might delete the worker object, which lives in another thread, while one of its methods was still being executed. This could cause a crash. Only if the destroyed KDirectoryContentsCounter was the last one, the worker thread was stopped, and the destructor waited until all workers are done. FIXED-IN: 4.13.0 REVIEW: 117209 M +12 -3 dolphin/src/kitemviews/private/kdirectorycontentscounter.cpp http://commits.kde.org/kde-baseapps/80b7aada681ec24d849f8860405a251ec2771380 |