Please report new issues athttps://github.com/DOCGroup
The following change: Tue Aug 27 15:48:17 2002 Irfan Pyarali <irfan@oomworks.com> Thanks to Christian Klutz <cklutz@gmx.net> for reporting the bug that resulted in the following changes. * tao/PortableServer/PortableServer_PolicyFactory.cpp: New class for creating POA Policies. * tao/PortableServer/PortableServer_ORBInitializer.cpp: New initialization class that adds TAO_PortableServer_PolicyFactory as a factory for POA Policies. * tao/PortableServer/PortableServer.cpp (init): Registered TAO_PortableServer_ORBInitializer with the PortableInterceptor. ... Breaks the DLL ORB functionality whenever the POA's static constructor is used. The problem stems from the fact that the static constructor defined in tao/PortableServer/PortableServer.cpp calls PortableInterceptor::register_orb_initializer(). That call forces TAO_Singleton_Manager to be default initialized since the ORBInitializer table/registry is a Singleton. Default initializing the TAO_Singleton_Manager causes it to be registered with the ACE_Object_Manager. Doing so prevents TAO from being dynamically unloaded safely since the ACE_Object_Manager will have a dangling reference to a non-existent TAO_Singleton_Manager. This problem is evident in the TAO/tests/DLL_ORB test.
Blocks TAO 1.3 since this is a major regression in TAO.
Note that calling PortableInterceptor::register_orb_initializer() in a static constructor in a DLL ORB environment is safe if the TAO_Singleton_Manager is pre-initialized to not be registered with the ACE_Object_Manager.
Fixed. Thanks for pointing this out Ossama! ChangeLogTag: Fri Oct 04 19:23:08 2002 Irfan Pyarali <irfan@oomworks.com>