Endian problems (was Re: [omniORB] Client hangs while trying to narrow reference specified by corbaloc)

Duncan Grisby duncan at grisby.org
Thu Aug 3 18:09:37 BST 2006


On Wednesday 2 August, "Patrick Hartling" wrote:

[...]
> If the client tries to connect to the server using a stringified
> object reference, I get a SequenceIsTooLong marshaling exception from
> within IOP::IOR::unmarshaltype_id(). Tracing into it, I find that the
> sequence length is supposed to be 32, but the byte order does not get
> swapped correctly, thus causing omniORB to think that the sequence is
> supposed to be much, much longer. This happens when the client is big
> endian and the server is little endian and vice versa. If the
> endianness matches for both machines, then there are no problems.

Byte-swapping certainly normally works. I've tried experiments with a
Sparc machine talking to an x86 machine, and it works fine. Whatever is
going wrong is more subtle than simply that it doesn't do the
byteswapping. What kinds of machines are you using, and how did you
build omniORB for them?  Could it perhaps be that on one of the machines
the build system thought it was little endian but it's actually
big-endian, or vice-versa?  That would mean it didn't swap when it was
meant to.

Cheers,

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan at grisby.org     --
   -- http://www.grisby.org --



More information about the omniORB-list mailing list