Looks like some lookup table in the ird gets corrupted, since it appears that 
the "ird" thinks that the given "OperationDef"  is_a
Container since this code returns "True" where obj is a "OperationDef" and 
repoid is "IDL:omg.org/CORBA/Container:1.0:

object.cc: (called from ir.cc below)
CORBA::Boolean
CORBA::Object::_is_a_remote (const char *repoid)
{
    // only ask remote if we are a stub
    if (_orbnc()->is_impl (this))
    return FALSE;
    if (!ior)
        return FALSE;
    return _orbnc()->is_a (this, repoid);
}

orb.cc:
...
CORBA::Boolean CORBA::ORB::is_a (Object_ptr obj, const char *repo_id)
...
Request_var req = obj->_request ("_is_a");
    req->add_in_arg ("logical_type_id") <<= repo_id;
    req->result()->value()->set_type (CORBA::_tc_boolean);
    MICO_CATCHANY(req->invoke ());
    if (req->env()->exception())
        mico_throw (*req->env()->exception());
    Boolean res;
    CORBA::Boolean r = (*req->result()->value() >>= Any::to_boolean (res));
    assert (r);

    if (res) {
      if (!*obj->_repoid()) {
    obj->_ior()->objid (repo_id);
      }
      else {
        MICOMT::AutoLock l(_isa_cache);
    string key = string(obj->_repoid()) + "$" + repo_id;
        _isa_cache.push_front (key);
        // XXX CACHE size = 50
        if (_isa_cache.size() > 50)
      _isa_cache.pop_back();
      }


ir.cc:
...
CORBA::Container_ptr CORBA::Container::_narrow( CORBA::Object_ptr _obj )
{
  CORBA::Container_ptr _o;
  if( !CORBA::is_nil( _obj ) ) {
    void *_p;
    if( (_p = _obj->_narrow_helper( "IDL:omg.org/CORBA/Container:1.0" )))
      return _duplicate( (CORBA::Container_ptr) _p );
    if (!strcmp (_obj->_repoid(), "IDL:omg.org/CORBA/Container:1.0") || 
_obj->_is_a_remote ("IDL:omg.org/CORBA/Container:1.0")) {
      _o = new CORBA::Container_stub;
      _o->CORBA::Object::operator=( *_obj );
      return _o;
    }
  }
  return _nil();
}



------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
Mico-devel mailing list
Mico-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mico-devel

Reply via email to