Skip to main content

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:

  1. 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.
  2. To change the policy from CORBA::SET_OVERRIDE to CORBA::ADD_OVERRIDE through the CORBA::PolicyManager::set_policy_overrides().
Old KB# 30455

#VisiBroker
#Security