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

List:       kde-core-devel
Subject:    nasty DCOPServer bug
From:       Matthias Elter <elter () trolltech ! com>
Date:       2001-03-02 14:20:54
[Download RAW message or body]

Hi

I think you all know what happens when a dcop client calls DCOPClient::call() 
while it already is in a call. The client freezes. This happened some time 
ago with kicker applets and other code.

The DCOPClient blocks the GUI while in a call to make sure no GUI event can 
trigger a new call before the first one returns. Furthermore Matthias Ettrich 
implemented a nice system to postpone incomming DCOP events (like sends) 
while the client is in a call to fix the problems we experienced with kicker 
applets.

Now I experienced applications hanging in DCOP calls again this week. The 
reason for the calls _again_ were clients entering calls while already 
calling. The client I used to debug this received a DCOP signal which 
triggered a call while it was supposed to block for another call.

The reason for the new bug is that whoever implemented DCOP signals did not 
make sure that all sends that are triggered by a signal use the magic message 
key for sends which prevents clients from accepting signals while blocking 
for a call.

I have commited a fix which should fix quite a bunch of hardly reproduceable 
freezes people experienced recently.

Matthias

P.S.: There is still one situation when a call can be triggered while the 
client already waits for a call to return, timer events. Try to avoid DCOP 
calls triggered by timer events. A timer may trigger a call while the client 
is already in a call.

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

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