[omniORB] ORB shutdown blocking from Python

Renzo Tomaselli renzo.tomaselli@tecnotp.it
Wed, 11 Jul 2001 19:33:35 +0200


Hi all,
    I experienced a strange problem when shutting down the ORB from Python.
Environment is a C++ dll on NT where a Python extension makes a straight
bridge between the two environments. OmniORBpy 1.4/OmniORB 3.04 both
out-of-the-box.
Things work fine when the application side is C++. Even from Python it works
unless one does:

orb=CORBA.ORB_init()

somewhere after the orb has been properly initialized on the dll side by
calling a startup() Python method.
Then shutting down the ORB on the C++ side through a shutdown() Python
method blocks forever within orb->destroy().
This occurs after the log message "omniORB: Shutting-down incoming rope
factories".
There seems a remaining Rope with ref. count of 1 there (last message is
"omniORB: strand Rope::decrRefCount: old value = 2", then only the scavenger
keeps on).
Also the message "omniORB: Python thread state scavenger start." appears
after taking the orb through the above line, while it does not appear
otherwise.
Performing a "del orb" or "orb=None" doesn't change anything; shutdown will
block forever.
Everything else from Python works fine until shutdown is called.
Also the same suite of components used to run fine under 2.8.
Full tracing is avalilable to anyone interested.
Any help will be appreciated,
                                             Renzo Tomaselli
---------------------------------------------------------------------------
TecnoTP s.n.c. Special Information System Design
Maso Pelauchi I38050 Ronchi Valsugana,  Trento TN  ITALY
Tel. +39 0461 773164      Fax. +39 0461 771514
e-mail: renzo.tomaselli@tecnotp.it
---------------------------------------------------------------------------