[omniORB] select blocks forever

Renzo Tomaselli renzo.tomaselli@tecnotp.it
Mon Mar 24 10:35:02 2003


Hi all,
    while using OmniORB 4.01 on Win XP, I found some cases where one of the
involved processes (server-role) blocks forever int tcpAddess.cc, line #236
(select).
This occurs at random, even if the timeout param tp is filled in by the
usual 5 secs.
In short, I have multiple instances of the same client which contact a
common server; this in turn keeps a list of all clients and pings them back
from time to time by means of a background thread.
Usually things run the proper way: dead clients (crashed by any reason) are
reported by this thread and cancelled from the list.
When I run a burst of clients (say 40) on the same host as the server
process and within a narrow time lap, some of them fail to contact the
server because of a timeout (transient failure), and that's ok (likely
missing resources at listening. Btw, I can retry successfully, but then the
subject block disappears).
Then, soon or later, I found the server thread blocked forever at select,
much like it's not able to contact a dead client. I guess this comes out
from some Winsock race between the server ping and the client being about to
exit.
As far as I understand this appears to be a Winsock select failure, since
timeout is correctly setup.
However I wonder while a simple blocking connect is not used
(USE_NONBLOCKING_CONNECT undefined) instead of a connect/select pair.
And off course I would like to know about anybody else meeting this block.
Thanks,
                          Renzo Tomaselli
 ---------------------------------------------------------------------------
 TecnoTP s.n.c. Special Information System Design
 Maso Pelauchi I38050 Ronchi Valsugana,  Trento TN  ITALY
 Tel. +39 0461 773164      Fax. +39 0461 771514
 e-mail: renzo.tomaselli@tecnotp.it
 ---------------------------------------------------------------------------