[omniORB] giopServer pd_state ZOMBIE for RootPOA (when giopServer
TIMEDOUT before)
Martin Trappel
0xCDCDCDCD at gmx.at
Fri Aug 8 12:03:08 BST 2008
Martin Trappel wrote:
> Martin Trappel wrote:
>> [omniORB 4.1.2, Windows XP, VC8 prebuilt DLLs]
>>
>> I have the situation where I repeatedly initialize and destroy the ORB
>> in a client application, (...)
> >
>
> I have now been able to reproduce the problem in a simpler context.
> Consider the following IDL:
> interface Dummy {
> void echo(in string s);
> };
> interface DummyServer {
> void doEcho(in Dummy d);
> };
>
> DummyServer is called by the process running a Dummy instance and the
> doEcho method just calls echo on the given interface pointer.
>
> And this is the setup I'm using:
> A.) Start a process with an instance of DummyServer (and register the
> object with the naming service). The server will just keep running and
> do nothing else. (just as with the echo example)
>
> B.) The Client Process now does the following *in a loop*:
> 1.) ORB_init
> 2.) start a separate omni_thread and call orb->run() there
> 3.) create a new poa from the root poa with the same policies as the
> root poa
> 4.) Create a new Dummy impl object
> 5.) activate the object with the created POA
> 6.) activate the POA
> 7.) Resolve the DummyServer Object via NamingService
> 8.) Call dummy_srv_ref->doEcho(my_dummy->_this())
> 9.) deactivate POA + destroy POA
> 10.) shutdown(true) orb (afterwards wait for run thread to terminate)
> 11.) destroy() orb
>
> With this setup I will reliably hit
> Caught omniORB::fatalException:
> file: giopServer.cc
> line: 284
> mesg: pd_state != ZOMBIE
> after just a few iterations (sometimes even on the first one).
> (...)
As a crosscheck I have tried to orb->run() in the same thread as
ORB_init() was called (and launch the server call in a separate thread
instead) -- error still there.
During this I found that if I introduce a slight delay (Sleep_100ms)
before orb->shutdown(true) (step 10) the error is no longer reproducible.
I'll keep you posted if I find something more ...
br,
Martin
More information about the omniORB-list
mailing list