[omniORB] ORB::destroy hanging(?) in omniORB 4.0.5

Duncan Grisby duncan at grisby.org
Tue Mar 29 18:32:55 BST 2005


On Tuesday 15 March, Steve Rowe wrote:

> I have converted an existing server application from using BOA (and omniORB
> 4.0.4 at this time) to using POA.  The original code to shutdown (using a
> signal handler) the server application seems to work just fine under BOA.
> Under POA however, the application does not shut down.  I have put in
> logging messages to determine that the call to ORB::shutdown(false) returns
> (as expected), but the call to ORB::destroy() does not.  It just seems to
> hang.

Firstly, you shouldn't call shutdown from a signal handler. The only
threading primitives guaranteed to work from signal handlers are System
V semaphores, so you should use one of those to trigger a thread to call
shutdown. I don't know if that's anything to do with your problem, but
it's something to consider.

[...]
> omniORB: (0) Wait for ORB invoker threads to finish.
> omniORB: (1) AsyncInvoker: thread id = 1 has exited. Total threads = 2
> omniORB: (2) AsyncInvoker: thread id = 2 has exited. Total threads = 1

This shows that there is a thread left behind. You should attach to the
process and get a back trace from any remaining threads, to see what's
going on.

Cheers,

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan at grisby.org     --
   -- http://www.grisby.org --



More information about the omniORB-list mailing list