[omniORB] Mystery Failure of C++ Python Extension Module Doesn'tKill Server

W. Eliot Kimber eliot@isogen.com
Mon, 02 Jul 2001 10:21:47 -0500


Lars Immisch wrote:

> I would guess that the exception is thrown in a CORBA upcall. This would be executed in a separate thread and omniORBpy seems to catch the exception. If you turn on ORBdebugLevel 1, you should see the exception being caught by omniORB.

Makes sense--I can start poking at it there. As Duncan guesses, we were
setting tracelevel to zero by default.

> Your server doesn't exit because the exception is caught by omniORBpy. Even if it wasn't caught, your server would not necessarily die because the dying thread might not affect the process. At least I remember that the python docs say that this is platform dependent, but I have no experience with platforms that show this behaviour. On Linux (probably pthreads in general) and Windows, a dying thread does not take the process with it.

We figured it had to be something like this.
 
> The interesting question is why you don't see the exception in your code.

The extension module pretty much swallows all Python exceptions (for
example, it allows for Python callbacks called from the C++
code--exceptions thrown in those callbacks are not propogated out to the
root Python process--it's a long story).

Thanks--this should be sufficient for me to figure out what's happening.

Cheers.

E.
-- 
. . . . . . . . . . . . . . . . . . . . . . . .

W. Eliot Kimber | Lead Brain

1016 La Posada Dr. | Suite 240 | Austin TX  78752
    T 512.656.4139 |  F 512.419.1860 | eliot@isogen.com

w w w . d a t a c h a n n e l . c o m