| 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 First Reported In: | 2.19 | ||
| Target Milestone: | --- | ||
| Platform: | Arch Linux | ||
| OS: | Linux | ||
| Latest Commit: | http://commits.kde.org/ark/c7af2d6372ea2b222e1af223b3fd53cdeb1f3c2b | Version Fixed/Implemented 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
|