[omniORB] MARSHAL from pyMarshal.cc
Marco Ferreira
mferreira at devion.org
Mon May 19 14:34:03 BST 2008
Sorry for all my mails, but this is really intriguing me.
I've been hacking the following piece of code in pyMarshal.cc, to try to
figure out what was happening at omniORB level:
static PyObject*
unmarshalPyObjectEnum(cdrStream& stream, PyObject* d_o)
{ // repoId, name, item list
char * string_ = PyString_AsString(PyObject_Repr(d_o));
printf("%s\n", string_);
PyObject* t_o = PyTuple_GET_ITEM(d_o, 3);
OMNIORB_ASSERT(PyTuple_Check(t_o));
CORBA::ULong e;
e <<= stream;
printf("e=%ld\n", e);
if (e >= (CORBA::ULong)PyTuple_GET_SIZE(t_o))
OMNIORB_THROW(MARSHAL, MARSHAL_InvalidEnumValue,
(CORBA::CompletionStatus)stream.completion());
PyObject* ev = PyTuple_GET_ITEM(t_o, e);
Py_INCREF(ev);
return ev;
}
And the output when the throwing occurs is:
(17, 'IDL:Incognito/SNMPVersion:1.0', 'SNMPVersion',
(SNMP_V_UNKNOWN, SNMP_V1, SNMP_V2, SNMP_V3))
e=-1075261268
omniORB: 2008-05-19 13:12:04.188990: throw MARSHAL from
pyMarshal.cc:3031 (NO,MARSHAL_InvalidEnumValue)
My question would be: how is it possible that 'e' value is below 0 since
it's declared as an unsigned long?
Marco Ferreira wrote:
> That was what I suspected, but unfortunately pyMarshel.cc still throws
> that MARSHAL.
> I'm sure both sides (including my proxy) have the same version. Could
> there be any other reason for this?
>
> Cheers
>
> Duncan Grisby wrote:
>
>> On Thursday 15 May, Marco Ferreira wrote:
>>
>>
>>
>>> Could any kind soul tell me if this a result of a bug at omniORB code by
>>> any chance?
>>>
>>> omniORB: 2008-05-15 18:59:33.076226: throw MARSHAL from
>>> pyMarshal.cc:3026 (NO,MARSHAL_InvalidEnumValue)
>>>
>>>
>> This means that you have received an enum that claims to have a numeric
>> value larger than the largest defined enum item. Almost certainly that's
>> because the sender and receiver are using different versions of the IDL.
>> Check that both sides of the communication have the same IDL.
>>
>> Cheers,
>>
>> Duncan.
>>
>>
>>
>
>
More information about the omniORB-list
mailing list