[omniORB] omniORB4: LONG Pause during orb->shutdown(0), orb->destroy()
Duncan Grisby
dgrisby@uk.research.att.com
Fri, 30 Nov 2001 10:41:17 +0000
On Thursday 29 November, Ken Feuerman wrote:
> Within Process B, the implementation of Destroy() is to set an event. The
> main thread waits on this event, deactivates the "DataStream" servant, then
> calls orb->shutdown(0) and orb->destroy(). The problem is that there's a
> very long pause in the thread launched by orb->shutdown(0) while it waits
> to stop serving the incoming endpoints.
You could just call orb->shutdown(0) from within the Destroy()
implementation. Then a thread blocking in orb->run() would wake up,
and could call orb->destroy(). This doesn't have anything to do with
your hang, though.
> I've appended the output from a run of Process B with the trace level set
> at 15, and (through some debugger hackery) traced locks and unlocks
> <orb_lock>. I'm running on Win2000, MSVC 6.0, omniORB snapshot as
> indicated in the log below. Any ideas why the hang?
No ideas, I'm afraid. Have you tried the call_back example from the
omniORB distribution? It'll be useful to know if that hangs or not --
it doesn't for me. If the call_back example doesn't hang, are you able
to construct a minimal example that does exhibit the hang?
Another thing to try is to run with argument -ORBtraceThreadId 1, as
well as -ORBtraceLevel 15. That will add the thread id to all trace
messages, which might make it easier to see what's going on.
Cheers,
Duncan.
--
-- Duncan Grisby \ Research Engineer --
-- AT&T Laboratories Cambridge --
-- http://www.uk.research.att.com/~dpg1 --