graceful mulit-threaded shutdown




I have a multithreaded app with one thread running an orbit2
(ORBit2-2.8.2-1) server.  This thread calls and blocks on CORBA_ORB_run(orb,
ev);   Things work fine, it accepts incoming messages and pipes them to
other threads all day long, but when I want to shut down my application I'm
running into trouble.

When my app shuts down, a child thread goes through all of my loaded
components and has them shut themselves down gracefully.  My orbit2 server
is a child of one of these components.  The problem is that the thread that
started the server is blocking and when I try to shutdown the server from
another thread I get:

** ERROR **: Must shutdown ORB from main thread
aborting...

and a core dump not too long after.  Is there some way to shut down the ORB
from another thread, or to signal the running server to stop so that the
thread can shutdown?  I'm assuming that the "main thread" the error is
referring to is the thread the created the orb.

I'm trying to shut down the orb and server using CORBA_ORB_shutdown.  If I
don't call this, don't have signal handling set up to call this, or don't
kill the parent thread manually during shutdown then the thread won't go
away and I have to kill the process manually.

any help would be appreciated.

-Tyler



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]