Vivek Nadkarni created AVRO-1165:
------------------------------------

             Summary: Avro-C: Memory leak in value iface containing AVRO_LINK.
                 Key: AVRO-1165
                 URL: https://issues.apache.org/jira/browse/AVRO-1165
             Project: Avro
          Issue Type: Bug
          Components: c
    Affects Versions: 1.7.1
         Environment: Ubuntu Linux 11.10
            Reporter: Vivek Nadkarni
             Fix For: 1.7.2


A memory leak can be seen when the following matched pair of commands is 
called, using a schema containing an AVRO_LINK. This pair of commands 
constructs a class (value iface) from a schema and then destroys the 
constructed class.

    record_class = avro_generic_class_from_schema( schema );
    avro_value_iface_decref( record_class );

If schema contains an AVRO_LINK, then avro_generic_class_from_schema() calls 
avro_generic_link_class(), which calls avro_schema_incref() on the AVRO_LINK 
target schema and assigns the target schema pointer to the iface->schema.

When we subsequently call avro_value_iface_decref() to deallocate the class, 
this function calls avro_generic_link_decref_iface(), which frees the memory 
for the link interface without calling avro_schema_decref() on the target 
schema pointed to by iface->schema.

Thus the memory of the target schema is leaked when we create and destroy a 
value interface for an AVRO_LINK. 

Calling avro_schema_decref() on the the target schema (iface->schema) before 
calling avro_freet() on the iface fixes this memory leak.

Note: The pair of commands shown above results in a memory leak, when we create 
and destroy a value interface from *any* schema containing an AVRO_LINK, 
regardless of whether it is recursive or not. There is a separate issue 
regarding memory leaks with recursive schemas described in AVRO-766. The fix 
for this issue can only be tested with non-recursive schemas containing 
AVRO_LINKs until AVRO-766 is fixed.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to