[omniORB] omni_thread_fatal when process for embedded python script ended

Achim Luber achim.luber at 4soft.de
Fri Jun 3 18:28:03 BST 2005


Hi,
we have a c++ linux programm xxx which uses omniorb (xxx is a CORBA 
server and also a client). One function of xxx is to start python 
scripts. This starting operation (which is done in an own process yyy 
wich is created by fork()) looks like this:
   // Initialize embedded python interpreter
   Py_Initialize();
   // Parameters given to python as programm arguments
   PySys_SetArgv(argc, argv);
   // Execute python script
   long long pyRC = PyRun_SimpleString( strScript.c_str() );
   // Shutting down python interpreter
   Py_Finalize();
The started python scripts are also CORBA clients and initialize their 
own omniorb by ORB_init.
Everything works fine but after python script ended, the process yyy 
ended and thereby an errormessage:
   terminate called after throwing an instance of 'omni_thread_fatal'
is printed.
This seems to be no problem???!!! All later calls to xxx (still the same 
process), which starts python scripts in an own process works as well as 
the first one, but ended also with the above described error message.

In order to avoid the error message we tried to shutdown() and destroy() 
the orb in process yyy before process yyy ended. This calls avoid the 
error message but no further scripts could be started, because the call 
of ORB_init in python scripts then results to a none object and no CORBA 
could be used...

Does anyone know how to avoid this errormessage? Or should we ignore it?
Thanks for any suggestion.
Bye
Achim



More information about the omniORB-list mailing list