[omniORB] POA resolution failing for cut-down Linux system

Bruce Fountain B_Fountain@motherwell.com.au
Thu, 23 Aug 2001 13:56:26 +0800


Hi guys,

we are developing a CORBA server process to run on a
cut-down Redhat 6.1 system. The process is compiled
statically on a standard RH system and then copied
on to the deployment system. Client-side functionality
is fine - we can make requests to other systems without
any problems.

When we try to resolve the the RootPOA we get CORBA
system exception INITIALIZE.

Compiler is egcs/glibc2.1:
   % gcc -v
   Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
   gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)

the server code looks like this:

  #include <omniORB3/CORBA.h>
  #include <omniORB3/poa.h>
  #include <CosEventChannelAdmin.hh>
  #include <stdio.h>
  int main (int argc, char *argv[])
  {
      try
      {
          CORBA::ORB_var m_orbVar = CORBA::ORB_init(argc, argv);
          printf("resolving POA!\n");
          CORBA::Object_var obj =
m_orbVar->resolve_initial_references("RootPOA");
          printf("narrowing POA!\n");
          PortableServer::POA_var root_poa =
PortableServer::POA::_narrow(obj);
      }
      catch(const CORBA::Exception& ex)
      {
          printf("CORBA::Exception caught\n");
          CORBA::Any any;
          any <<= ex;
          CORBA::TypeCode_var tc = any.type();
          printf("With the following type: %s\n", tc->name());
      }
      return 0;
  }


If I run this code on the development machine it works fine. Here
is the debug output (trace level 20):

 omniORB: strand Ripper: start.
 omniORB: scavenger : start.
 omniORB: gateKeeper is tcpwrapGK 1.0 - based on tcp_wrappers_7.6 
 omniORB configuration file: /etc/omniORB.cfg either does not exist or is
not a file.
 omniORB: The omniDynamic library is not linked.
 resolving POA!
 omniORB: Initialising incoming rope factories.
 omniORB: strand Rope::incrRefCount: old value = 0
 omniORB: Starting incoming rope factories.
 narrowing POA!
 omniORB: tcpSocketMTfactory Rendezvouser: start.
 omniORB: tcpSocketMTfactory Rendezvouser: block on accept()

But if I run it on the deployment machine the resolve_initial_references()
fails:

 omniORB: The omniDynamic library is not linked.
 resolving POA!
 omniORB: Initialising incoming rope factories.
 omniORB: throw INITIALIZE from objectAdapter.cc:182
 CORBA::Exception caught
 With the following type: INITIALIZE
 omniORB: scavenger : start.

If anyone can suggest what could be causing this exception
I would be eternally grateful (no really!)

Bruce Fountain
Mi Consulting Group (Australia) Pty Ltd
Direct Line:  +61 (0)8 9368 8607
Switchboard:  +61 (0)8 9368 8600
Facsimile:    +61 (0)8 9368 8699
E-mail: b_fountain@motherwell.com.au