[ 
https://issues.apache.org/jira/browse/AVRO-1034?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vivek Nadkarni updated AVRO-1034:
---------------------------------

    Attachment: AVRO-1034.patch

The attached patch calls avro_resolved_reader_init(), on the value
previously returned by avro_resolved_array_reader_get_by_index(), and
returns the result of that call. This patch fixes the segmentation
fault in the attached test case.

However, I am not sure if this is the *right* way to fix the array
initialization. I would appreciate it if someone else could review the
patch. 

One concern with the patch is that the init function is called *every*
time the function avro_resolved_array_reader_get_by_index() is
called. So for example, the init function is called each time
avro_value_copy() is called to copy the resolved value into another
avro value. It is not clear to me whether such behavior is desirable. 

Thanks again,
Vivek

                
> Avro C Resolved reader does not initialize children of arrays, resulting in 
> segmentation faults
> -----------------------------------------------------------------------------------------------
>
>                 Key: AVRO-1034
>                 URL: https://issues.apache.org/jira/browse/AVRO-1034
>             Project: Avro
>          Issue Type: Bug
>          Components: c
>    Affects Versions: 1.6.2
>         Environment: GNU/Linux Ubuntu 11.10 64-bit
>            Reporter: Vivek Nadkarni
>             Fix For: 1.6.3
>
>         Attachments: AVRO-1034.patch, avro-1034-test.c
>
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> As I did in AVRO-984, I created a test program that creates an avro 
> value corresponding to the following schema: 
>   {"type":"array", "items": {"type": "array", "items": "long"}}
> The avro_value is then resolved using a resolved_reader, and an 
> attempt is made to read from the resolved_reader. This results in a
> segmentation fault on Linux.
> I believe this issue is similar to the issue in AVRO-984, in which
> nested arrays did not work because avro_resolved_array_writer_init()
> did not recursively call the init function on its children. In that
> case the initialization had to be deferred until a new item was
> appended to the array.
> I believe that avro_resolved_array_reader_init() should also
> recursively call the init function on its children, in a deferred
> manner as in AVRO-984, but I don't know how to implement this yet.
> I will attach a test program that shows the crash. 
> Thanks,
> Vivek

--
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