[omniORB] Why SYSTEM_EXCEPTION from _narrow()?
David Morgenlender
dmorgen@alum.mit.edu
Thu, 10 Sep 1998 21:45:10 GMT
I'm using a version of omniORB from before the most recent snapshot. My =
app was
working just fine re omniORB. Then I modified the IDL file to break =
things down
into more interfaces. I changed things around on both client & server to=
use
the new interface definitions. I rebuilt ... now I get a
CORBA::SYSTEM_EXCEPTION on the client!!!
This happens when it issues a _narrow(), essentially as follows:
// Essentially the same as in the echo example ...
CORBA::Object_var obj =3D getObjectReference(orb); =09
if( CORBA::is_nil(obj) )
{
cerr << " We have a nil object reference" << endl;
return FALSE;
}
// Get interface object references.
DvtDiagnostics_var varDvtDiagnostics;
varDvtDiagnostics =3D DvtDiagnostics::_narrow(obj);
I chased it down to GIOPCLIENT.CC line 245, where the "switch(rc)" goes =
to the
case for "GIOP::SYSTEM_EXCEPTION". rc had been set by "rc <<=3D *this" =
on the
preceding line.
Digging a little further, I discovered that UMARSHAL(...) invokes
align_get_bytes() (BUFFEREDSTREAM.H line 371). This returns the value of=
p1,
which had been set to 0x1057684 & points to the value 2. I tried tracing
through that code, but didn't understand what it's doing.
I'm coming up on a very tight client deadline, so if anybody has any idea=
what's
going on here, I sure would like to hear about it!!!
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
Dave Morgenlender
e-mail: dmorgen@alum.mit.edu
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D