Hello,

the resolving of the "RootPOA" after ORB shutdown/destroying and
reinitiating leads to an assertion (MSVC8/2005):

*********************************************************************
[3659310003 - 003DCA60] poa_impl.cc:303: assertion failed
*********************************************************************

Here is the appropriate code of MICO that contains the assert line:

*** poa_impl.cc *****************************************************
MICOPOA::POACurrent_impl::POACurrent_impl (CORBA::ORB_ptr _orb)
{
#ifndef HAVE_THREADS
  state_stack_ = NULL;
#else // HAVE_THREADS
  // we get exactly one POACurrent object
  //  therefor no care is nesesary for creating the key
  MICOMT::Thread::create_key(current_key_, &__current_cleanup);
#endif // HAVE_THREADS
  assert (CORBA::is_nil (PortableServer::_the_poa_current));
  PortableServer::_the_poa_current = this;
  orb = _orb;
  orb->set_initial_reference ("POACurrent", this);
}
*********************************************************************

I am using a class "Server" that initiates the ORB and destroys it at
deconstruction right after a preceding shutdown. The following code
snippet illustrates it:

*********************************************************************
Server::Server()
{
  _orb = CORBA::ORB_init(...);
  ...
  CORBA::Object_var poa_obj = _orb->resolve_initial_references("RootPOA");
  ...
}

Server::~Server()
{
  _orb->shutdown(...);
  _orb->destroy();
}
*********************************************************************

The programm runs fine with the first constructed object of type
"Server". The assertion inescapably happens _after_ de- and reconstruction.

Is there something missing in my code, maybe something related to POA
cleanup?

Thanks,
Patrick
_______________________________________________
Mico-devel mailing list
Mico-devel@mico.org
http://www.mico.org/mailman/listinfo/mico-devel

Reply via email to