[ 
https://issues.apache.org/jira/browse/AVRO-984?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13173505#comment-13173505
 ] 

Douglas Creager commented on AVRO-984:
--------------------------------------

Vivek discovered that the resolved-writer array implementation wasn't 
initializing values correctly when they were appended to the array.  For arrays 
of primitives, this wasn't a problem, since the space for the array element 
would be overwritten by the new value once you called the appropriate set 
method.  For arrays of arrays, however, you'd get some uninitialized memory for 
the sub-array.  I'm attaching a patch that fixes this.  I've also asked Vivek 
to make a couple of small modifications to his test program so that we can 
include it in the test suite, to help us avoid seeing this as a regression in 
the future.
                
> Avro C - Resolved reader fails to read nested arrays and reads uninitialized 
> memory
> -----------------------------------------------------------------------------------
>
>                 Key: AVRO-984
>                 URL: https://issues.apache.org/jira/browse/AVRO-984
>             Project: Avro
>          Issue Type: Bug
>          Components: c
>    Affects Versions: 1.6.1, 1.6.2, 1.7.0
>         Environment: GNU/Linux Ubuntu 11.10 64-bit 
>            Reporter: Vivek Nadkarni
>             Fix For: 1.6.2, 1.7.0
>
>         Attachments: avro-984-output.txt, avro-984-test.c, 
> avro-984-valgrind-output.txt, resolved-writer.patch
>
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> 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. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to