----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://reviewboard.kde.org/r/972/#review1614 -----------------------------------------------------------
I'm really unable to reproduce this crash. As far as I can see here, kopete has only two threads (even if you have many accounts). And the protocols are only in one of them, which makes two parallel runs impossible. (I might be wrong as I don't know kopete internals very well) Anyway, when you delete mainConnection, the destructor is called, and the first thing it does is to set the state to NS_DISCONNECTED, so in this second run it would be impossible to execute this "delete" again, as it requires the state to be different from NS_DISCONNECTED. Another possibility is binary incompatibility with libmsn, you said you recompiled kopete and this crash did not happen anymore. The patch in libmsn for the mail notification feature adds a new callback, and I believe it breaks the binary compatibility, so kopete would have unexpected behavior if you did not recompile kopete properly after installing the new libmsn. - Tiago On 2009-07-09 12:01:45, Lamarque Souza wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://reviewboard.kde.org/r/972/ > ----------------------------------------------------------- > > (Updated 2009-07-09 12:01:45) > > > Review request for Kopete. > > > Summary > ------- > > Sometimes Kopete crashes when disconnecting from WLM server. I think I have > found the cause, which seems a race condition in WlmServer::WlmDisconnect: > > 1 if (mainConnection) > 2 { > 3 disconnecting = true; > 4 QListIterator i(cb.socketList); > 5 while (i.hasNext()) > 6 { > 7 a = i.next(); > 8 QObject::disconnect (a, 0, 0, 0); > 9 cb.socketList.removeAll (a); > 10 } > 11 cb.socketList.clear (); > > 12 if (mainConnection->connectionState () != > 13 MSN::NotificationServerConnection::NS_DISCONNECTED) > 14 { > 15 delete mainConnection; > 16 mainConnection = NULL; > 17 } > 18 } > > If WlmServer::WlmDisconnect is called twice in a really short time frame > between the if in line 1 and the delete in line 15 some time will passed and > the second run of WlmServer::WlmDisconnect will enter the if and delete > mainConnection object for a second time, which will cause Kopete to crash. > > > This addresses bug 199580. > https://bugs.kde.org/show_bug.cgi?id=199580 > > > Diffs > ----- > > /trunk/KDE/kdenetwork/kopete/protocols/wlm/wlmserver.h 993925 > /trunk/KDE/kdenetwork/kopete/protocols/wlm/wlmserver.cpp 993925 > > Diff: http://reviewboard.kde.org/r/972/diff > > > Testing > ------- > > > Thanks, > > Lamarque > > _______________________________________________ kopete-devel mailing list kopete-devel@kde.org https://mail.kde.org/mailman/listinfo/kopete-devel