-----------------------------------------------------------
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

Reply via email to