[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