[omniORB] Exception thrown when calling resolve_initial_references

John A. Byerly byerly@stargate.net
Fri, 4 Aug 2000 18:21:00 -0500


Help!

I am migrating our project from omniORB 2.7.1 to omniORB 3.0.0.  Our core
code calls resolve_initial_references to get the Naming service, and then
when a DLL is loaded, the code in the DLL calls resolve_initial_references
again.  This second call causes an exception to be thrown, but only after
about 20 - 30 seconds.  This code used to work.

I traced the problem into the following code (resolveBootAgent() inside
initRefs.cc).

      // XXX we will end up in a deadlock if this invocation turns
      //     out to be a chain of invocations and eventually go back
      //     to us.
      if (omniORB::trace(10)) {
	CORBA::String_var ior(omniURI::objectToString(the_bootagent));
	omniORB::logger l;
	l << "Trying to resolve initial reference `" << id << "'\n";
	l << " with boot agent: " << (const char*)ior << "\n";
      }
      result = the_bootagent->get(id);

Execution hangs on the last line (for 20 - 30 seconds).

This is an NT project in VC++ 6.0.  When I run the release version, I get
the following message:

	omniORB: Assertion failed -- mutex should not be held.
	 This is a bug in omniORB. Please submit a report (with stack
	 trace if possible) to <omniorb@uk.research.att.com>.
	   file: ..\corbaBoa.cc
	   line: 833

Is this true, or am I doing something wrong?

Thanks!

JAB