[
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