Details
Description
Summary:
I created a test program that creates an avro value corresponding to
the following schema:
{"type":"array", "items": {"type": "array", "items": "long"}}
and tries to read it back using a matched and resolved reader. The
matched reader is able to reconstruct the avro value, but the resolved
reader fails to read the value.
Additionally valgrind indicates that conditional jumps are being
performed based on uninitialized memory, when trying to reconstruct
the value using the resolved reader.
More Details:
I created a test program that creates an avro value corresponding to
the following writer schema:
{"type":"array", "items": {"type": "array", "items": "long"}}
The avro value is serialized to memory.
Then this memory is read back into two readers. In both cases the
reader schema is set to be identical to the writer schema.
The first reader is a matched reader – i.e. the reader knows that the
writer and reader schema are identical.
The second reader is a resolved reader – i.e. the reader tries to
resolve differences between the writer and reader schema. The schemas
should resolve perfectly, since the writer and reader schema are
identical.
When we try to deserialize the binary buffer with the matched reader,
the value is reconstructed perfectly.
When we try to deserialize the binary buffer with the resolved reader,
the code fails to populate the avro value. This failure indicates that
the resolved reading of the nested array not working
properly. Additionally valgrind indicates that conditional jumps are
being performed based on uninitialized values, in this second case.
I will attach a test program that shows the issues.