Review Request: Prevent crash in KJob::emitResult() if job is deleted

Kevin Ottens ervin at kde.org
Thu Dec 2 14:20:53 GMT 2010


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://svn.reviewboard.kde.org/r/6022/#review9095
-----------------------------------------------------------


Proposing a slightly different approach.


trunk/KDE/kdelibs/kdecore/jobs/kjob.cpp
<http://svn.reviewboard.kde.org/r/6022/#comment9889>

    Introduce a local variable storing the result of isAutoDelete() while we're sure to still be safe.



trunk/KDE/kdelibs/kdecore/jobs/kjob.cpp
<http://svn.reviewboard.kde.org/r/6022/#comment9891>

    Use the guard only to issue a warning as advised by Albert.



trunk/KDE/kdelibs/kdecore/jobs/kjob.cpp
<http://svn.reviewboard.kde.org/r/6022/#comment9890>

    Make the check based only on the local variable introduced above.


- Kevin


On 2010-12-01 17:01:44, Aurélien Gâteau wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://svn.reviewboard.kde.org/r/6022/
> -----------------------------------------------------------
> 
> (Updated 2010-12-01 17:01:44)
> 
> 
> Review request for kdelibs and Kevin Ottens.
> 
> 
> Summary
> -------
> 
> If a someone calls "delete job" on a slot connected to the KJob::result() signal, KJob crashes because the job does not exist anymore when execution comes back to KJob::emitResult(). I added a guard to prevent that. An alternative would be to call deleteLater() before emitting the signals but I was afraid it would cause trouble if slots connected to the emitted signals used event loops.
> 
> 
> This addresses bug 241562.
>     https://bugs.kde.org/show_bug.cgi?id=241562
> 
> 
> Diffs
> -----
> 
>   trunk/KDE/kdelibs/kdecore/jobs/kjob.cpp 1202165 
>   trunk/KDE/kdelibs/kdecore/tests/kjobtest.h 1202165 
>   trunk/KDE/kdelibs/kdecore/tests/kjobtest.cpp 1202165 
> 
> Diff: http://svn.reviewboard.kde.org/r/6022/diff
> 
> 
> Testing
> -------
> 
> Wrote a unit-test to demonstrate the problem. This also helps with bug #241562 although I have another request prepared to hopefully definitely nail it down.
> 
> 
> Thanks,
> 
> Aurélien
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20101202/52455a17/attachment.htm>


More information about the kde-core-devel mailing list