Dain Sundstrom wrote:
Just a guess, but are some of the arrays reused? Basically, are they
serializing the exact same array instance twice in the same request
(or object stream)? If so, it could be a back reference.
Nope, already been down that path. There are no indirect references in
this stream. The bogus type value is also not the indirection marker,
which would be "ffffffff".
Rick
Again, just a guess...
-dain
On Dec 13, 2006, at 9:27 AM, Rick McGuire wrote:
Oops, never mind the previous. The test case is populating the
integers using nested loops and using values of (i*j) for the
insertions. The numbers I'm seeing are the correct sequence. The
input stream seems to be carrying extra unexpected values. This is
even more evidence that things are working correctly up to the
failure point.
Rick
Rick McGuire wrote:
Ok, I've figured out something a little more here. By checking the
values of the unmarshalled Integer objects, I've discovered that on
the array where the error occurs, the unmarshalling is somehow
skipping values. The first object read is ok, the second object
should be third, the 3rd object is the 5th, and the 4th read ends up
giving the error. Any suggestions on what could suddenly cause
values to start getting skipped like this, or where I can try
probing to find the cause of the error?
Rick
Rick McGuire wrote:
I'm working on a fairly complicated test case that involves sending
and receiving a very large object across RMI. The object in
question is a 3-dimensional array of Vectors. The Vectors are all
5 elements in size, each element consisting of an Integer
instance. There were a number of problems I needed to fix first in
array handling, but things appear to be working correctly now. The
Vectors appear to be deserializing correctly. Each one contains an
Object array that appears to be the correct size.
The Integers are getting deserialized ok, until around the 50th or
so value is read from the stream. At that point, I'm getting a
MARSHAL exception for an invalid value type code. The bogus value
is 0x3800. I don't know here this value came from, since the
serialized object was generated by a Sun RMI server. Does this
value have an special meaning to anybody? Is it possibly a
chunking marker, or is something else going on here?
Rick