[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Re: kicker problem
From: Matthias Ettrich <ettrich () trolltech ! com>
Date: 2000-08-30 16:16:36
[Download RAW message or body]
Mit, 30 Aug 2000 wrote Dirk Mueller:
> On Mit, 30 Aug 2000, Matthias Elter wrote:
>
> > Kicker sometimes hangs in a DCOP call when it loads multiple applets external \
> > (via the appletproxy) on startup. I'm a bit clueless about what is happening.
>
> this also happened with the old API. For some reason there application name
> was already registered, but the process itself died. then the dcop call
> hangs forever.
This is strange, because the dcopserver is supposed to handle that. If a
connection dies, everybody who's waiting for a reply receives a replyFailed.
There may be something wrong with the order, though. I just applied the
following patch:
--- dcopserver.cpp 2000/08/08 08:13:45 1.98
+++ dcopserver.cpp 2000/08/30 16:15:01
@@ -795,7 +795,8 @@
// Send DCOPReplyFailed to all in conn->waitingForReply
while (!conn->waitingForReply.isEmpty()) {
- IceConn iceConn = conn->waitingForReply.take(0);
+ IceConn iceConn = conn->waitingForReply.getLast();
+ conn->waitingForReply.removeLast();
if (iceConn) {
DCOPConnection* target = clients.find( iceConn );
qWarning("DCOP aborting call from '%s' to '%s'", target ? \
target->appId.data() : "<unknown>" , conn->appId.data() ); @@ -811,7 +812,8 @@
// Send DCOPReplyFailed to all in conn->waitingForDelayedReply
while (!conn->waitingForDelayedReply.isEmpty()) {
- IceConn iceConn = conn->waitingForDelayedReply.take();
+ IceConn iceConn = conn->waitingForDelayedReply.getLast();
+ conn->waitingForDelayedReply.removeLast();
if (iceConn) {
DCOPConnection* target = clients.find( iceConn );
qWarning("DCOP aborting (delayed) call from '%s' to '%s'", target ? \
target->appId.data() : "<unknown>", conn->appId.data() );
I don't believe it makes a difference for the particular problem, though. When
it hangs, we need to find out where exactly. Maybe the server keeps rejecting
the call and DCOPClient::call tries over and over again?
Matthias
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic