discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GWorkspace hangs on first exit attempt. Remote objects problem?


From: Riccardo Mottola
Subject: Re: GWorkspace hangs on first exit attempt. Remote objects problem?
Date: Fri, 08 Mar 2013 02:09:20 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0 SeaMonkey/2.16

Hi,

some further information

1) unregisterClient is (oneway void). So it is asynchronous, no need to wait for any value returned (Sebastian suggested doing this to me, but is already correct) 2) if I wrap [fswatcher unregisterClient] in an exception handler, on the machines which caouse problems I do get an exception.

2013-03-08 01:06:25.990 GWorkspace[7503] [GWorkspace shouldTerminateApplication] unregister fswatcher: <NSException: 0x318ac38> NAME:NSInvalidReceivePortException REASON:invalidated while awaiting reply INFO:(null)

Doesn't it look like exit() kills fswatcher but something still needs to be sent? The stacktrace is:

#0  -[NSException raise] (self=0x232efb8,
    _cmd=0x7ffff6e2f9e0 <_OBJC_SELECTOR_TABLE+384>) at NSException.m:955
#1  0x00007ffff696a6f1 in +[NSException raise:format:] (
    self=0x7ffff6e2fb40 <_OBJC_Class_NSException>, _cmd=<optimized out>,
    name=0x7ffff6e63120 <_OBJC_INSTANCE_0>,
    format=0x7ffff6e1b200 <_OBJC_INSTANCE_68>) at NSException.m:835
#2  0x00007ffff69383e3 in -[NSConnection(Private) _getReplyRmc:] (
    self=0x124a7d8, _cmd=0x7ffff6e1cdc0 <_OBJC_SELECTOR_TABLE+1536>, sn=26)
    at NSConnection.m:3219
#3 0x00007ffff6933422 in -[NSConnection(GNUstepExtensions) forwardInvocation:forProxy:] (self=0x124a7d8, _cmd=0x7ffff6e2ad10 <_OBJC_SELECTOR_TABLE+592>,
    inv=0x22bd328, object=0x12de0f8) at NSConnection.m:2086
#4  0x00007ffff6a7472b in GSFFIInvocationCallback (cif=0x232eee0,
    retp=0x7fffffffd7a0, args=<optimized out>, user=0x2366718)
    at GSFFIInvocation.m:629
#5  0x00007ffff1c4ad09 in ffi_closure_unix64_inner ()
   from /usr/lib64/libffi.so.6
#6  0x00007ffff1c4b054 in ffi_closure_unix64 () from /usr/lib64/libffi.so.6
#7  0x00000000004137ad in -[GWorkspace applicationShouldTerminate:] (
    self=0xd0ca48, _cmd=<optimized out>, app=<optimized out>)
    at GWorkspace.m:635
#8  0x00007ffff70daf02 in -[NSApplication terminate:] (self=0xd2be98,
    _cmd=<optimized out>, sender=<optimized out>) at NSApplication.m:3462


I see _getReplyRmc: but there is going to be none, the app is dead and it is oneway void.

Does this sound plausible?

Riccardo

Riccardo Mottola wrote:
Hi,

some of you may have noticed that GWorkspace sometimes do not exit at the first attempt, but at the second. It does not happen on all computers, but on those where it does, it happens consistently. I and Sebastian did a "NSLog debugging", my previous attempts with gdb where unsuccessful.

in GWorkspace, in applicationShouldTerminate, we have this code:


  if (fswatcher) {
NSConnection *conn = [(NSDistantObject *)fswatcher connectionForProxy];

    if ([conn isValid]) {
      [nc removeObserver: self
                      name: NSConnectionDidDieNotification
                    object: conn];
      [fswatcher unregisterClient: (id <FSWClientProtocol>)self];
      DESTROY (fswatcher);
    }
  }

the problematic line is:
[fswatcher unregisterClient: (id <FSWClientProtocol>)self];

When this GWS hangs, it hangs because this line does not return. fswatcher is the daemon object.

fswatcher will exit with exit() when the last client unregisters and in this case it is happening, we checked the code-path and also "ps" shows that it indeed exists. Why does it hang? And why does it hang on certain machines only?

I fear there could be a base problem, when invoking remote objects?

Riccardo

_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnustep




reply via email to

[Prev in Thread] Current Thread [Next in Thread]