FROM : Guy Meyer
DATE : Sun Nov 18 22:00:26 2007
My client server application communicate over sockets using
NSConnection.
On the client side, there are multiple threads (not the main thread),
communicating with the server.
Each thread has a single NSConnection. The connection is terminated by
issuing an invalidate method on the connection and the thread is
existed.
On Tiger there is no problem with said architecture.
On Leopard few seconds after the thread being terminated, all other
threads (which contains an active NSConnection to the server) receives
the following exception (if there are no more threads connected to the
same server, the exception does not occur - in this example there 3
threads which receive the exception):
*** NSDistantObject initWithCoder: 0x3 not given away for conn
0x1514bde0
*** -[NSConcretePortCoder decodeInvocation]: no local target
*** NSDistantObject initWithCoder: 0x4 not given away for conn
0x1514f9d0
*** -[NSConcretePortCoder decodeInvocation]: no local target
*** NSDistantObject initWithCoder: 0x2 not given away for conn
0x1515e1f0
*** -[NSConcretePortCoder decodeInvocation]: no local target
I have tried few way to circumvent the issue, like invalidating ports
instead of the connection or continuing running the runloop before
existing the thread (but as there are are no more input sources the
runloop return immediately)
I am looking for ways to terminate the connection without the exception.
Thanks
Guy Meyer
DATE : Sun Nov 18 22:00:26 2007
My client server application communicate over sockets using
NSConnection.
On the client side, there are multiple threads (not the main thread),
communicating with the server.
Each thread has a single NSConnection. The connection is terminated by
issuing an invalidate method on the connection and the thread is
existed.
On Tiger there is no problem with said architecture.
On Leopard few seconds after the thread being terminated, all other
threads (which contains an active NSConnection to the server) receives
the following exception (if there are no more threads connected to the
same server, the exception does not occur - in this example there 3
threads which receive the exception):
*** NSDistantObject initWithCoder: 0x3 not given away for conn
0x1514bde0
*** -[NSConcretePortCoder decodeInvocation]: no local target
*** NSDistantObject initWithCoder: 0x4 not given away for conn
0x1514f9d0
*** -[NSConcretePortCoder decodeInvocation]: no local target
*** NSDistantObject initWithCoder: 0x2 not given away for conn
0x1515e1f0
*** -[NSConcretePortCoder decodeInvocation]: no local target
I have tried few way to circumvent the issue, like invalidating ports
instead of the connection or continuing running the runloop before
existing the thread (but as there are are no more input sources the
runloop return immediately)
I am looking for ways to terminate the connection without the exception.
Thanks
Guy Meyer
| Related mails | Author | Date |
|---|---|---|
| Guy Meyer | Nov 18, 22:00 | |
| Aurélien Hugelé | Nov 19, 12:52 | |
| Guy Meyer | Nov 19, 20:21 | |
| Aurélien Hugelé | Nov 20, 03:22 |






Cocoa mail archive

