[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kopete-devel
Subject:    Re: [kopete-devel] Review Request: Fix for crash when disconnecting
From:       "Tiago Salem Herrmann" <salem () mandriva ! com>
Date:       2009-07-10 20:11:36
Message-ID: 20090710201136.28713.10722 () localhost
[Download RAW message or body]


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


how many times were you able to reproduce this crash?
What was the interval between the two offline status requests?
I'm not sure if a race condition can happen here, because as far as I know there are \
no threads running in this part of the code, and as the mainConnection is erased and \
deleted, in the second run the if(mainConnection) would prevent that situation.

- 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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic