Problem:
ORB crashes due to wrong order of calling orb->resolve_initial_references
Resolution:
Product Name: VisiBroker for C
Product Version: All
Platform/OS Version: All
Problem Description
When user calls orb->resolve_initial_references("ORBPolicyManager") before orb->resolve_initial_references("RootPOA"), the ORB may crash with a similar stack trace when resolve_initial_references("RootPOA" ) is called.
(gdb) bt
#0 0x009fe219 in vbsec::CSIV2IORInterceptor::establish_components
(this=0xa0e3308, info=0xa10c7f8) at
CSIV2IORInterceptor.cpp:217
#1 0x014c96bf in VISChainPIIORInterceptor::establish_components
(this=0xa109d48, info=0xa10c7f8) at vpiiorint.C:72
#2 0x0166c994 in VISPOA::initialize (this=0xa0e48f8,
policies=@0xbfcb0cc0) at vpoa.C:3422
#3 0x01673501 in VISPOA::root_POA () at vpoa.C:3932
#4 0x0167e564 in VISPOAServiceResolver::resolve (this=0x18e9040,
service=0x690a15 "RootPOA") at vpoa.C:638
#5 0x0150ed58 in VISServiceResolverManager::resolve
(this=0xa0bfd58, name=0x690a15 "RootPOA") at
vmiscint.C:57
#6 0x016a052e in VISORB::resolve_initial_references
(this=0xa0bf788, name=0x690a15 "RootPOA") at
vorb.C:933
#7 0x006739c8 in CTServer::initORB () from
/opt/IBM/ITM/li6263/cq/lib/libKfwORBInit.so
#8 0x0804e0d6 in main ()
Resolution:
The following are the two resolutions to this issue:
- To ensure that call to orb->resolve_initial_references("ORBPolicyManager ") happens after orb->resolve_initial_references("RootPOA"). When the application is a multi-threaded, it is the user"s responsibility to ensure correct sequence of call between the two.
- To change the policy from CORBA::SET_OVERRIDE to CORBA::ADD_OVERRIDE through the CORBA::PolicyManager::set_policy_overrides().
#VisiBroker
#Security