[omniORB] Hanging during boa->destroy()

Sai-Lai Lo S.Lo@uk.research.att.com
29 Nov 2000 15:38:57 +0000


The fix is now back-ported to the omni2_8_develop branch. You can obtain
the snapshot of this tree at:

ftp://ftp.uk.research.att.com/pub/omniORB/omniORB_28_snapshots/omniORB-latest.tar.gz

Sai-Lai

>>>>> Christof Meerwald writes:

> 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.




-- 
Sai-Lai Lo                                   S.Lo@uk.research.att.com
AT&T Laboratories Cambridge           WWW:   http://www.uk.research.att.com 
24a Trumpington Street                Tel:   +44 1223 343000
Cambridge CB2 1QA                     Fax:   +44 1223 313542
ENGLAND