[omniORB] Bug fix for the ORB::shutdown

Burton, Craig CBurton at verisign.com
Mon Dec 20 11:41:11 GMT 2004


First, sorry for trace level 40 - I did not have time to modify the start scripts for our program.

Second, this might in fact be related to the use of SSL in our server application.  This first trace is using omniORB 4.0.5 (compiled with SSL support), but the application itself is not ssl enabled.  It shuts down as expected (which, fortunately, rules out a difference in behavior from our perspective between 4.0.2 and 4.0.5):

(successful, no ssl)
omniORB: Deactivating all POA(CF_0002)'s objects.
omniORB: State root/CF_0002<VTS.CF.0002> (active) -> deactivating (OA destruction)
omniORB: Waiting for requests to complete on POA(CF_0002).
omniORB: Requests on POA(CF_0002) completed.
omniORB: State root/CF_0002<VTS.CF.0002> (deactivating OA) -> etherealising
omniORB: Etherealising POA(CF_0002)'s objects.
omniORB: Removing root/CF_0002<VTS.CF.0002> (etherealising) from object table
omniORB: Object table entry root/CF_0002<VTS.CF.0002> (dead) deleted.
omniORB: Destruction of POA(CF_0002) complete.
omniORB: Deactivating all POA(RootPOA)'s objects.
omniORB: State root<3> (active) -> deactivating (OA destruction)
omniORB: State root<2> (active) -> deactivating (OA destruction)
omniORB: State root<1> (active) -> deactivating (OA destruction)
omniORB: State root<0> (active) -> deactivating (OA destruction)
omniORB: Waiting for requests to complete on POA(RootPOA).
omniORB: Requests on POA(RootPOA) completed.
omniORB: State root<3> (deactivating OA) -> etherealising
omniORB: State root<2> (deactivating OA) -> etherealising
omniORB: State root<1> (deactivating OA) -> etherealising
omniORB: State root<0> (deactivating OA) -> etherealising
omniORB: Etherealising POA(RootPOA)'s objects.
omniORB: Removing root<3> (etherealising) from object table
omniORB: Object table entry root<3> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Removing root<2> (etherealising) from object table
omniORB: Object table entry root<2> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Removing root<1> (etherealising) from object table
omniORB: Object table entry root<1> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Removing root<0> (etherealising) from object table
omniORB: Object table entry root<0> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Stopping serving incoming endpoints.
omniORB: giopServer waits for completion of rendezvousers and workers
omniORB: giopServer back from waiting.
omniORB: Destruction of POA(RootPOA) complete.
omniORB: Shutting-down all incoming endpoints.
omniORB: TCP endpoint shut down.
omniORB: Disable ObjRef(IDL:VtsSoaApi/VtsSoaConnection:1.0) root<3>
omniORB: omniRemoteIdentity deleted.
omniORB: Disable ObjRef() key<NameService>
omniORB: omniRemoteIdentity deleted.
omniORB: 2 object references present at ORB shutdown.
omniORB: ORB shutdown is complete.
omniORB: ObjRef() -- deleted.
omniORB: ORB not destroyed; no final clean-up.

The second trace is from the same application, with the addition of ssl support (sslContext singleton).  It does not shut down:

(unsuccessful, ssl)
omniORB: Removing root/CF_392A<VTS.CF.392A> (etherealising) from object table
omniORB: Object table entry root/CF_392A<VTS.CF.392A> (dead) deleted.
omniORB: Destruction of POA(CF_392A) complete.
omniORB: Deactivating all POA(RootPOA)'s objects.
omniORB: State root<3> (active) -> deactivating (OA destruction)
omniORB: State root<2> (active) -> deactivating (OA destruction)
omniORB: State root<1> (active) -> deactivating (OA destruction)
omniORB: State root<0> (active) -> deactivating (OA destruction)
omniORB: Waiting for requests to complete on POA(RootPOA).
omniORB: Requests on POA(RootPOA) completed.
omniORB: State root<3> (deactivating OA) -> etherealising
omniORB: State root<2> (deactivating OA) -> etherealising
omniORB: State root<1> (deactivating OA) -> etherealising
omniORB: State root<0> (deactivating OA) -> etherealising
omniORB: Etherealising POA(RootPOA)'s objects.
omniORB: Removing root<3> (etherealising) from object table
omniORB: Object table entry root<3> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Removing root<2> (etherealising) from object table
omniORB: Object table entry root<2> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Removing root<1> (etherealising) from object table
omniORB: Object table entry root<1> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Removing root<0> (etherealising) from object table
omniORB: Object table entry root<0> (dead) deleted.
omniORB: RefCountServantBase has zero ref count -- deleted.
omniORB: Stopping serving incoming endpoints.
omniORB: giopServer waits for completion of rendezvousers and workers
omniORB: giopServer back from waiting.
omniORB: giopServer waits for completion of rendezvousers and workers
omniORB: Scan for idle connections (1103570903,106120200)
omniORB: Scavenger reduce idle count for strand 167dc8 to 671
omniORB: Scavenger reduce idle count for strand 167b48 to 671
omniORB: Scavenger reduce idle count for strand 20f6a8 to 711
omniORB: Scan for idle connections done (1103570903,106120200).
omniORB: Scan for idle connections (1103570908,116103400)
omniORB: Scavenger reduce idle count for strand 167dc8 to 670
omniORB: Scavenger reduce idle count for strand 167b48 to 670
omniORB: Scavenger reduce idle count for strand 20f6a8 to 710
omniORB: Scan for idle connections done (1103570908,116103400).
omniORB: AsyncInvoker: thread id = 3 has exited. Total threads = 2
omniORB: Scan for idle connections (1103570913,125996200)
omniORB: Scavenger reduce idle count for strand 167dc8 to 669
omniORB: Scavenger reduce idle count for strand 167b48 to 669
omniORB: Scavenger reduce idle count for strand 20f6a8 to 709

Any insight on this issue would be greatly appreciated.  We have a workaround (signal -9), but it's not as graceful.

Thanks,
Craig

-----Original Message-----
From: Duncan Grisby [mailto:duncan at grisby.org] 
Sent: Monday, December 20, 2004 10:00 AM
To: Burton, Craig
Cc: omniorb-list at omniorb-support.com
Subject: Re: [omniORB] Bug fix for the ORB::shutdown 


On Monday 20 December, "Burton, Craig" wrote:

> I'm seeing a difference in behavior than I'm used to (of course, I was
> previously using 4.0.2).  I'm calling "shutdown( 0 )" and the server
> process freezes.  I was under the impression that passing zero means
> not to block on active connections.

The zero argument means not to block the calling thread waiting for
shutdown to occur. Regardless of how you call shutdown(), active calls
should be allowed to complete before the shutdown succeeds.

> Here's a silly question: must one deactivate all servants prior to
> calling 'shutdown' on the ORB?

No, you don't need to do that.

What exactly are you seeing, and what did you see before?  Are you able
to get a trace from both omniORB versions with -ORBtraceLevel 25
-ORBtraceThreadId 1 ?

Cheers,

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan at grisby.org     --
   -- http://www.grisby.org --



More information about the omniORB-list mailing list