[omniORB] orb shutdown hangs in giopServer::deactivate()

Renzo Tomaselli renzo.tomaselli at tecnotp.it
Wed Oct 15 12:07:11 BST 2003


Hi all,
    we use OmniORB 4.02 libs off-the-shelf on WinXP, threading model as per
default.
In a distributed application made up of a client/server process pair, the
server orb shutdown hangs at giopserver.cc, line #524. This occurs both when
client and server are on the same host or on different machines.
I raised this issue a few months ago, while using v. 4.01, but the problem
remains the same.
This block occurs at random but very often only on the server and never on
the client. In general, we need a long running session to get it, such as
feeding 100000 docs into a OODB managed by the server.
Client and server share a common infrastructure, but every 10 seconds the
server pings back on a client interface - a sort of keepalive mechanism -
until the client says he's over.
I noticed that when giopServer::deactivate() is entered, we have
pd_nconnections = 1 and just one surviving connection, which has pd_state =
DYING, pd_refcount = 1, pd_dying = 1.
This is exactly the server->client callback connection (there are no other
connections), but at this point the client has been already orderly
shutdown. This dying connection appears there even long later that the
client disconnected, so it's not a matter of waiting for a while.
Then I noticed while debugging that none of following connection->Send,
connection->Shutdown will decrement pd_nconnections, hence further down we
will block forever in pd_cond->wait.
In this context, surviving threads are SocketCollection::Select(),
omni::Scavenger::execute() and omniServantActivatorTaskQueue::real_run(),
none of which seems related to connection closing.
I post this in the hope that someone can suggest a workaround (such as
forcing the connection to close *before* shutting down the orb, how ?), or a
possible fix in OmniORB itself.
Thanks,
                          Renzo Tomaselli
  --------------------------------------------------------------------------
-
  TecnoTP s.n.c. Special Information System Design
  Maso Pelauchi I38050 Ronchi Valsugana,  Trento TN  ITALY
  --------------------------------------------------------------------------
-





More information about the omniORB-list mailing list