[omniORB] Debugging marshaling errors

Jason Stelzer jstelzer at healthmarketscience.com
Mon Jul 30 17:51:11 BST 2007


On Jul 30, 2007, at 4:13 PM, Duncan Grisby wrote:
> You've posted a trace of the marshalled data. You can unpick the data
> according to the GIOP spec to see if that tells you anything. It's a
> painful and probably unnecessary exercise, though.
>
> You should post the IDL and code you are using. Without that, it's
> impossible to offer any advice. How does your code compare with the
> simple valuetype example in src/examples/valuetype/simple?
>
> The place it's segfaulting is where it tries to call _add_ref on the
> factory you have registered, which suggests that perhaps you have
> released too many references on it, causing it to be prematurely
> deleted.
>
>


As far as the returned data goes, on a high level it looks right. I  
mean, I see the strings I'd expect to see given the address I've just  
geocoded. Picking it further apart is probably not going to be  
productive for me.


Thank you for the reply and sorry not all relevant information was  
present. Should you care to look, all code is here:
http://neverlight.com/~cynic/libLms/


It's essentially me feeling my way through a prototype so its a bit  
of a mess right now. However, it is representative of the codebase  
which lead to the error in the last post.
The initial milestone release used only primitives and it did work.  
However using only strings and splitting complex data structures  
apart was... error prone. So, I'm simply trying to figure out how to  
expose a pojo and use it as a struct to hold the results of geocoding  
an address.

Lms.cpp is the 'main' program. It is what is compiled to a shared  
library. Currently it fails when the call to getLmsData() fails as  
shown by the marshaling error.

Since jboss uses reflection to deploy corba services through jacorb,  
the idl in the idl directory was generated from class files and  
'fixed up'. It is very likely that I need to alter them further I  
suppose.

For reference I've been using http://docs.sun.com/source/817-0462-10/ 
dccpp.html
  as a reference on what needs fixed up when you generate idl this way.


AddressResultsImpl.* is the implementing class(es) for the  
corresponding stub code generated from the idl for the AddressResults  
pojo. Is this simply a matter of me needing to adjust the idl a bit  
and define the return types to the location manager differently?  
Meaning, return AddressResultsImpl* instead of AddressResults* and  
register the factory as such?


Thanks for any time you give this. Yes, I'm learning quite a bit at  
once so I apologize in advance for things being messy. I'm trying to  
bridge java/ejb->corba->C++->C->perl.


--
J.





More information about the omniORB-list mailing list