[omniORB] omniORB: Assertion failed. This indicates a bug in omniORB.

Mark Zimmerman Mark_A_Zimmerman@raytheon.com
Fri, 3 Nov 2000 14:15:48 -0700


On Fri, Nov 03, 2000 at 01:35:44PM -0500, Robert E. Gruber wrote:
> It is hard to help without more info.  It looks like the ORB is being
> destroyed twice.  This happened to me once when I wrote a test program like
> this:
> 
>   CORBA::ORB_var orb = ...  ; // use of _var will destroy orb when it goes
> out of scope
>   ...
>   orb->destroy(); // oops, double destroy
> 
> If this does not help, send more info.  Are you running one of the test
> programs from the omniNotify distribution?
> 
> -- Bob
> 

That's not exactly it since I'm using a CORBA::ORB_ptr variable.

I am trying to understand how to connect to and disconnect from an
event channel from a Motif program so that this will be under user
control. I started with event_push_consumer.cc from the omniNotify
distribution and attempted to wrap it in an object that will allow
connecting and disconnecting. Also, I eleminated use of the wrappers
since I wanted to see the details that they obscured.

I put the .h and the .cc file together and posted it at the following
URL since it seems a bit long for a mailing list:

http://www.foresthaven.com/testcode/clogclient.cc

Anyhow, the gui code creates an instance of cLogClient and then, under
user control, calls Connect() and/or Disconnect(). Everything works
fine until termination when ~cLogClient() is called. I can eleminate
the error by not calling the destructor, but that would be cheating.

The goal here is to learn how to build a restartable service that may
run for a long time without leaking resources. Unfortunately, all of
the example code I've seen consists of short programs that do their
thing and terminate. Also, my big thick CORBA book (Henning and
Vinoski) barely introduces the event service and has no mention of the
notification service. If you can recommend a reference that covers the
topics with which I am struggling then please do so.

Thanks,
Mark