[omniORB] Location Marshalling Fault

EXT-Pennington, Dale K dale.k.pennington at boeing.com
Mon Jul 21 12:38:30 BST 2008


Thank you, that allowed my to track down what is doing on and confirm my
suspicions.

Basically, we are interfacing to an existing CORBA application that does
things I am not sure should be done.

They are placing arbitrary values into enumated members of a CORBA IDL
derived structure and passing it through the CORBA interface. These
values fail the sanity check in the generated .hh files while
unmarshalling in the server, hence causing the CORBA MARSHALLING
exception to be passed back to the client.

Now we are in no position to change how the existing app does things.
Also what they do gets by their ORB (as well as TAO orb, which we are
also evaluating) with no complaints. Sanity checking seems unique to
OmniORB at this point.

The next question on my list is : Is there a way to disable the sanity
checking in the enumation unmarshalling code, other than manually
editing the .hh files generated by the IDL Compiler. I read the IDL
chapter of the documentation, and did not see anything.

Thanks,
Dale Pennington

> -----Original Message-----
> From: Duncan Grisby [mailto:duncan at grisby.org] 
> Sent: Monday, July 21, 2008 10:13 AM
> To: EXT-Pennington, Dale K
> Cc: omniorb-list at omniorb-support.com
> Subject: Re: [omniORB] Location Marshalling Fault 
> 
> On Friday 18 July, "EXT-Pennington, Dale K" wrote:
> 
> > I am taking a CORBA application that ran on another ORB and 
> porting it 
> > to OmniOrb. It includes a rather involved structure as one of the 
> > parameters. When I attempt to test the function take uses this 
> > structure, I get a Marshal Exception with a minor code that 
> tranlates 
> > to
> > : MARSHAL_InvalidEnumValue. Is there any way to get OmniORB 
> to give me 
> > more details (if I new which structure member it would help 
> a lot in 
> > tracking the issue down).
> 
> If you run with -ORBtraceExceptions 1 you'll get a message 
> telling which line in the stub header file has thrown the 
> exception. Looking at that code will tell you which enum it 
> is that's been sent with an invalid value, but not which 
> structure it's in.
> 
> To work that out, the easiest thing is to modify the 
> generated code that throws the MARSHAL exception so that it 
> calls abort(). That way your program will fail at the time 
> the invalid value occurs, and you'll be able to figure out 
> which structure it's in from the call stack.
> 
> Cheers,
> 
> Duncan.
> 
> -- 
>  -- Duncan Grisby         --
>   -- duncan at grisby.org     --
>    -- http://www.grisby.org --
> 



More information about the omniORB-list mailing list