[omniORB] omniORB 4.0.1 hangs in giopServer::deactivate()

Matej Kenda matejkenda@volja.net
Tue Apr 8 10:29:02 2003


On Fri, 2003-04-04 at 14:31, Bastiaan Bakker wrote:
> Hi,
> 
> I'm trying to debug an application which sometimes hangs in
> giopServer::deactivate() upon a call to ORB->shutdown(1). In particular
> it waits for 'completion of workers and rendevouzers' in line 518
> (pd_cond.wait()). 
> 
> I've four threads in total, all of them waiting:
> 1. omni::giopServer::deactivate (this=0x807fcf8) at giopServer.cc:518
> 2. __pthread_manager () from /lib/i686/libpthread.so.0
> 3. omni::Scavenger::execute (this=0x8086090) at giopStrand.cc:647
> 4. omniServantActivatorTaskQueue::real_run (this=0x8092c08) at
> poa.cc:3001
> 

I am also experiencing this kind of hangs. They appear randomly. There
doesn't seem to be a usage pattern to cause this. The same code worked
fine with omnoORB 3.0.5.

Extracts from the trace:

[A 033802 08:08:06.405] omniORB: Etherealising POA(RootPOA)'s objects.
[A 003076 08:08:07.408] omniORB: omniRemoteIdentity deleted.
[A 003076 08:08:07.408] omniORB: ObjRef(IDL:ivd/i_ResourceManager:1.0) -- deleted.
[A 003076 08:08:07.408] omniORB: omniRemoteIdentity deleted.
[A 003076 08:08:07.408] omniORB: ObjRef(IDL:ivd/i_ResourceManager:1.0) -- deleted.
[A 002051 08:08:08.027] omniORB: Scan for idle connections (1048835288,18441000)
[A 002051 08:08:08.028] omniORB: Scavenger reduce idle count for strand 0x8337bc0 to 13
...
[A 032773 08:08:14.177] omniORB: AsyncInvoker: thread id = 32 has exited. Total threads = 3
[A 002051 08:08:18.047] omniORB: Scan for idle connections (1048835298,37763000)
...
[A 002051 08:09:13.154] omniORB: Scavenger close connection to giop:tcp:10.65.1.60:45953
[A 002051 08:09:13.154] omniORB: Client connection refcount (forced) = 0
[A 002051 08:09:13.154] omniORB: Client close connection to giop:tcp:10.65.1.60:45953
...
[A 002051 08:09:23.173] omniORB: Scavenger close connection to giop:tcp:10.65.1.60:45962
[A 002051 08:09:23.173] omniORB: Client connection refcount (forced) = 0
[A 002051 08:09:23.173] omniORB: Client close connection to giop:tcp:10.65.1.60:45962
...
[A 002051 08:09:48.222] omniORB: Client connection refcount (forced) = 0
[A 002051 08:09:48.222] omniORB: Client close connection to giop:tcp:10.65.1.60:45968
[A 002051 08:09:48.222] omniORB: Scavenger close connection to giop:tcp:10.65.1.60:45642
[A 002051 08:09:48.222] omniORB: Client connection refcount (forced) = 0
[A 002051 08:09:48.222] omniORB: Client close connection to giop:tcp:10.65.1.60:45642
[A 002051 08:09:48.222] omniORB: Scavenger close connection to giop:tcp:10.65.1.60:45642
[A 002051 08:09:48.222] omniORB: Client connection refcount (forced) = 0
[A 002051 08:09:48.222] omniORB: Client close connection to giop:tcp:10.65.1.60:45642
[A 002051 08:09:48.222] omniORB: Scan for idle connections done (1048835388,211978000).
[A 002051 08:09:53.231] omniORB: Scan for idle connections (1048835393,222305000)
[A 002051 08:09:53.231] omniORB: Scavenger reduce idle count for strand 0x40900f78 to 1
...
[A 002051 08:10:03.251] omniORB: Client connection refcount (forced) = 0
[A 002051 08:10:03.251] omniORB: Client close connection to giop:tcp:10.65.1.60:45739
[A 002051 08:10:03.251] omniORB: Scan for idle connections done (1048835403,241710000).
[A 002051 08:10:08.260] omniORB: Scan for idle connections (1048835408,251187000)
[A 002051 08:10:08.260] omniORB: Scan for idle connections done (1048835408,251187000).

These last lines then keep repeating, but the omniORB doesn't come out of run().

With best regards,

Matej