Revision 73dd22e...

Go back to digest for 19th January 2014

Bug Fixes in KDE-PIM

Christian Mollekopf committed changes in [kdepim-runtime] resources/imap/sessionpool.cpp:

Try to avoid another crash in the imap resource.

This crash might have appeared when:
* KIMAP::LoginJob fails with connectionLost
* SessionPool::onLoginDone calls cancelSessionCreation
* the emit connectDone will hiddenly leave the function and
call IMAPResource::onConnectDone which again calls SessionPool::disconnect
thus potentially deleting all Sessions (although with deleteLater()).
* cancelSessionCreation later calls killSession again with the pointer
that is potentially already deleted using deleteLater from the call to
disconnect.
* The code finally crashes in killSession when calling QObject::disconnect on
the apparently invalid session pointer.

The analysis is based on the backtrace in 322440 (duplicate of 319776).

Note that this analysis makes only sense if the deleteLater was actually
executed for some reason (we somehow entered the eventloop),
and that I never managed to write a testcase reproducing the issue.

Since I'm out of ideas I try anyways, also, code that leaves the function
in the middle of the function due to signals gives me headaches.


REVIEW: 114995

File Changes

Modified 1 files
  • resources/imap/sessionpool.cpp
1 files changed in total