[Ace-users] Re: [tao-users] mixing omniORB and TAO within one process

Adam Mitz mitza at ociweb.com
Wed Jun 20 10:19:22 CDT 2007

Friedhelm Wolf wrote:
> TAO VERSION : 1.5.8
>     i686 pc, SUSE linux Enterprise Server 9, Kernel 2.6.5
>     gcc 3.3.3 (SuSE Linux)
>     #include "config-linux.h"
>     include $ACE_ROOT/include/makeinclude/platform- linux.GNU
> SYNOPSIS: Can omniORB and TAO coexist in the same process space?
> I then tried to integrate this one TAO object into the omniORB system.
> This system however loads CORBA servants from a shared libraries.
> The whole mechanism to find and load these needed libraries, includes
> CORBA calls (which are still served by omniORB CORBA servants).
> As a concequence to this I end up initializing TAO and registering
> the object within a CORBA call served by omniORB (see attatched
> coredump.txt), which seems to lead to a coredump.
> More specifically said, the registration of the servant object within
> the POA, using the _this() method seems to mess up everything.

At the time of the crash had the TAO ORB been initialized normally 
(ORB_init(), POA Manager activation, etc.)?
Have you tried replacing _this() with the equivalent operations? 
(poa->activate_object, poa->id_to_reference, _narrow)

> Does anyone have some hints for me, if it is a bad idea in general to
> use TAO and omniORB in the same adress space. Or might the nesting of
> TAO servant registration within the processing of omniORB be a problem?
> Maybe someone familiar with the TAO POA can comment on what exactly is
> going wrong, by having a look at the coredump stack?

In general I believe the official rule is that mixing ORBs from 
different vendors in the same process is not supported.  That's not to 
say you couldn't get it to work...

Adam Mitz
Software Engineer
Object Computing, Inc.

More information about the Ace-users mailing list