[omniORB] Throw UNKNOWN from GIOP_C.cc:268 (MAYBE, UNKNOWN_UserException)

radamkie at kdm.pl radamkie at kdm.pl
Wed Apr 12 19:20:52 BST 2006


Hi,

In one omniORB application, it's raised such exception (like in the titel).

The omniORB trace show:
4749 4f50 0102 0101 3800 0000 0005 0000 GIOP....8.......
0200 0000 0000 0000 1e00 0000 4944 4c3a ............IDL:
6f6d 672e 6f72 672f 434f 5242 412f 554e omg.org/CORBA/UN
4b4e 4f57 4e3a 312e 3000 3030 0100 4d4f KNOWN:1.0.00..MO
0200 0000                               ....
omniORB: throw UNKNOWN from GIOP_C.cc:268 (MAYBE,UNKNOWN_UserException)
omniORB: SocketCollection idle. Sleeping.
omniORB: inputMessage: from giop:tcp:10.12.10.168:47027 312 byte

It's raised in GIOP_C.cc:268 in function:

void
GIOP_C::UnMarshallSystemException()
{

#define CHECK_AND_IF_MATCH_THROW_SYSTEM_EXCEPTION(_ex) \
  if (strcmp("IDL:omg.org/CORBA/" #_ex ":1.0",(const char*)repoid) == 0) \
    OMNIORB_THROW(_ex, minorcode, (CORBA::CompletionStatus) status);

  // Real code begins here
  cdrStream& s = *this;

  CORBA::String_var repoid;

  repoid = s.unmarshalRawString();

  CORBA::ULong minorcode;
  CORBA::ULong status;
  minorcode <<= s;
  status <<= s;

  clearValueTracker();

  impl()->inputMessageEnd(this,0);
  pd_strand->first_use = 0;
  pd_state = IOP_C::Idle;

  switch (status) {
  case CORBA::COMPLETED_YES:
  case CORBA::COMPLETED_NO:
  case CORBA::COMPLETED_MAYBE:
    break;
  default:
    OMNIORB_THROW(UNKNOWN,UNKNOWN_SystemException,CORBA::COMPLETED_YES);
  };

  OMNIORB_FOR_EACH_SYS_EXCEPTION(CHECK_AND_IF_MATCH_THROW_SYSTEM_EXCEPTION)

  // If none of the above matched
  OMNIORB_THROW(UNKNOWN,UNKNOWN_SystemException,CORBA::COMPLETED_YES);

#undef CHECK_AND_IF_MATCH_THROW_SYSTEM_EXCEPTION
}

In aplication, the exception is caughted as a CORBA::SystemException 
and an entry to appplication logs is genereted in this way:

        catch (CORBA::SystemException& e)
        {
                _log.err(xprintf("CORBA system exception [%d-%s]", 
e.minor(),e.NP_minorString()));
        }

.. it produce many logs entries like this:

CORBA system exception [1330446337-UNKNOWN_UserException]

I can not find solution to avoid this exception - has someone met this 
problem ?

Regards
Radek









More information about the omniORB-list mailing list