Summary: | Dolphin Segfault when typing wrong decompressing password | ||
---|---|---|---|
Product: | [Applications] ark | Reporter: | Yichao Yu <yyc1992> |
Component: | general | Assignee: | Raphael Kubo da Costa <rakuco> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | 2.19 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/ark/c7af2d6372ea2b222e1af223b3fd53cdeb1f3c2b | Version Fixed In: | 4.9.1 |
Sentry Crash Report: | |||
Attachments: | An (almost) empty rar file that can cause the problem |
Description
Yichao Yu
2012-07-28 14:00:50 UTC
Can you attach a file that causes this crash with steps to reproduce? Created attachment 72811 [details]
An (almost) empty rar file that can cause the problem
The way that I used to extract this file is to drag it to a empty place in dolphin and select "extract" in the popup menu. Open it in ark directly is fine (and this is why I reported it as a dolphin bug at first).
The crash happens after the second (somehow it popup twice) "password mistake" window is closed.
Git commit c7af2d6372ea2b222e1af223b3fd53cdeb1f3c2b by Raphael Kubo da Costa. Committed on 16/08/2012 at 17:37. Pushed by rkcosta into branch 'KDE/4.9'. Stop emitting finished() from CliInterface::failOperation(). We were always emitting finished() twice if failOperation() was called: - If it did kill the process in its doKill() call, the fact that the process was killed would call processFinished(), which would emit finished(true). failOperation() would later emit finished(false). - For the cases in which the process was not being killed, the callers in cliinterface.cpp were acting according to the following pattern: if (something failed) { emit error("Oops, something bad happened"); failOperation(); return false; } If the process wasn't killed it means it had already finished, so processFinished() had already been called (and consequently finished(true) had already been emitted), yet failOperation() would emit finished(false) again. This was particularly troublesome for AddToArchive and BatchExtract, since they rely on the KJob::result() signal to kill the AddToArchive/BatchExtract instance and quit the application. Since our Jobs connect to the finished() signal to call KJob::emitResult(), the application was being deleted by the time the second finished() signal was emitted, leading to crashes (this normally happens if you enter a wrong password or extract a corrupted file). Unfortunately, we still don't unit test CliInterface, so no there are no new tests :( Related: bug 304764 FIXED-IN: 4.9.1 M +1 -3 kerfuffle/cliinterface.cpp http://commits.kde.org/ark/c7af2d6372ea2b222e1af223b3fd53cdeb1f3c2b |