[omniORB] Hanging during boa->destroy()

Christof Meerwald cmeerw@web.de
Wed, 29 Nov 2000 01:37:09 +0100


On Tue, 28 Nov 2000 18:54:28 -0500, Gerke, Tom wrote:
[...]
>call boa->impl_shutdown() and then boa->destroy().  This boa->destroy() call
>hangs up for about 3 minutes before exiting.  No exception is thrown, and
>when it comes out, my application proceeds to exit normally.
[...]
>It's stuck in a call to tcpSocketMTincomingFactory::removeIncoming(), when
>the pd_shutdown_cond object (of type omniCondition) calls wait...   It's the
>"WaitForSingleObject(xxx, INIFINITE);" call inside of omniCondition::wait()
>which is keeping me held up for those minutes.

I think this behaviour is fixed in omniORB 3.0.2; here is the relevant
change-log entry (from tcpSocketMTfactory.cc):

  Revision 1.22.6.17 2000/08/10 10:10:56 sll
  For those platforms which cannot be unblocked from a recv() by a
  shutdown(), now do poll() or select() for both incoming and outgoing
  strands.  This is necessary especialy for win32 or else the server side
  socket will not shutdown until the client side close the socket. This
  wasn't done previously as it was thought that shutdown() does have an
  effect on recv() if this is a passive socket. This turns out to be wrong.


bye, Christof

-- 
http://cmeerw.cjb.net                        http://cmeerw.cjb.net/wap/
mailto cmeerw at web.de                   AIM, Yahoo! Messenger: cmeerw