apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Ruppert ...@ruppert-it.de>
Subject Possible data race bug in apr_pools.c:allocator_alloc
Date Tue, 11 Aug 2009 20:13:40 GMT
Hi all,

currently I run most of my APR based tools against valgrinds helgrind 
tool to check for possible threading problems. Valgrind detected a 
possible data race reading a allocator field:

static APR_INLINE
apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size)
{
....
     /* First see if there are any nodes in the area we know
      * our node will fit into.
      */
     if (index <= allocator->max_index) {
                  ^^^^^^^^^^^^^^^^^^^^^^^ Possible data race
#if APR_HAS_THREADS
         if (allocator->mutex)
             apr_thread_mutex_lock(allocator->mutex);
#endif /* APR_HAS_THREADS */
....


I think valgrind reports this error correctly since in multi-threaded 
environments the lock needs to be acquired before the if()-block!

Any comments? Should I provide a patch?

Regards,
Stefan



Mime
View raw message