[omniORB] Question concerning problems with an old omniORB-version

mrfynn at gmx.net mrfynn at gmx.net
Mon Aug 7 14:26:51 BST 2006


Hi @all,

Years ago I've ported omniORB 3.0.4 to an embedded system we are using,
a realtime OS for a PowerPC-CPU (8260).

So far so fine. Our system is running properly without any complaints for
4 years now.

Recently we made some changes to our system startup. to make thing run faster. This included changes in the linker-command-file and a new startup-routine in our System (all to make our System run in RAM and no longer in ROM, for speed-up).

With these changes our system encounters a weird crash when we do the following:

1. Establishing a connection to our Corba-interface running on the PowerPC.
(We export the stringified IOR for these purposes, so no IIOP-connection is necessary. Client side: a simple VS 6 console application for tests) doing the following:

1.1. Creating an Object_var out of the sIor by calling string_to_object.
1.2. Narrowing the object-pointer to the designated interface-type.
1.3. Checking for is_nil.

2. Calling one of the methods of our Corba-interface.

3. Destroying the clients orb.

4. Closing client application by returning 0.

Only when the application is doing step 2 the system crash occurs, but only after the client application is closed (after Step 4).

I think there might be some problem when remains of client application are closed after the return.

Can you tell me a point where I can start debugging my software in the server system? Any suggestions are welcome!

Thank you in advance,
Jakob



P.S.: For illustration a simplified code sequence:


int main(int argc, char* argv[])
{

// Step 1.
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");

// ... getting sIor

// Step 1.1.
CORBA::Object_var obj = orb->string_to_object(sIor);

// Step 1.2.
IManager_var ManagerRef = IManager::_narrow(obj);

// Step 1.3.
if( CORBA::is_nil(vManagerRef) )
{
     printf("Can't narrow reference to type Manager (or it was nil).\n");
     return 1;
}

// Step 2.
ManagerRef->GetSettings();

// Step 3.
orb->destroy();

// Step 4.
return 0;
} // <-- here the client application crashes



More information about the omniORB-list mailing list