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

Douglas Creager updated AVRO-746:
---------------------------------

    Description: 
In one of my projects that uses Avro, I pass avro_datum_t instances between 
threads, using the reference count mechanism to make sure that they're not 
freed while any thread still has a reference to them.  I was getting some 
spurious segfaults, which were caused by the fact that the reference counts 
aren't updated atomically.  I've created a patch that implements atomic 
reference counts, using the [OpenPA 
library|http://trac.mcs.anl.gov/projects/openpa/] to provide the atomic 
operations themselves.  (That library is MIT licensed, so it can be included in 
the source tree.)

Note that only avro_XXX_incref and avro_XXX_decref are thread-safe as a result 
of this patch.  For all of the other library functions, the caller is still 
responsible for ensuring thread safety.

The patch makes sure that the OpenPA code works in both the old autotools build 
and the newer CMake build.

  was:
In one of my projects that uses Avro, I pass avro_datum_t instances between 
threads, using the reference count mechanism to make sure that they're not 
freed while any thread still has a reference to them.  I was getting some 
spurious segfaults, which were caused by the fact that the reference counts are 
updated atomically.  I've created a patch that implements atomic reference 
counts, using the [OpenPA library|http://trac.mcs.anl.gov/projects/openpa/] to 
provide the atomic operations themselves.  (That library is MIT licensed, so it 
can be included in the source tree.)

Note that only avro_XXX_incref and avro_XXX_decref are thread-safe as a result 
of this patch.  For all of the other library functions, the caller is still 
responsible for ensuring thread safety.

The patch makes sure that the OpenPA code works in both the old autotools build 
and the newer CMake build.


> Atomic reference counts
> -----------------------
>
>                 Key: AVRO-746
>                 URL: https://issues.apache.org/jira/browse/AVRO-746
>             Project: Avro
>          Issue Type: Bug
>          Components: c
>            Reporter: Douglas Creager
>            Assignee: Douglas Creager
>         Attachments: 0001-Atomic-reference-counts.patch
>
>
> In one of my projects that uses Avro, I pass avro_datum_t instances between 
> threads, using the reference count mechanism to make sure that they're not 
> freed while any thread still has a reference to them.  I was getting some 
> spurious segfaults, which were caused by the fact that the reference counts 
> aren't updated atomically.  I've created a patch that implements atomic 
> reference counts, using the [OpenPA 
> library|http://trac.mcs.anl.gov/projects/openpa/] to provide the atomic 
> operations themselves.  (That library is MIT licensed, so it can be included 
> in the source tree.)
> Note that only avro_XXX_incref and avro_XXX_decref are thread-safe as a 
> result of this patch.  For all of the other library functions, the caller is 
> still responsible for ensuring thread safety.
> The patch makes sure that the OpenPA code works in both the old autotools 
> build and the newer CMake build.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to