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
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to