]> git.openfabrics.org - ~ardavis/dapl.git/commit
There is a race condition between dapl_rbuf_add() dapl_rbuf_remove() when
authorJianxin Xiong <jianxin.xiong@intel.com>
Sat, 18 Aug 2012 05:30:06 +0000 (22:30 -0700)
committerJianxin Xiong <jianxin.xiong@intel.com>
Sat, 18 Aug 2012 05:30:06 +0000 (22:30 -0700)
commit0ad340a2b1c61205a7f498fe936560b4a41f1bc9
treecce233df02cab6efc41959081a34f5e130f8412b
parent249901d04a6612c3faa4d5e4eb1d98cd27b7c00f
There is a race condition between dapl_rbuf_add() dapl_rbuf_remove() when
the ring buffer is empty or full. This could lead to incorrect item be
dequeued and correct item be discarded.

A temporary workaround is provided to ensure the pending event queue work
correctly. Without this fix dapl_evd_dequeue() could return the wrong event
and causes various application errors (hanging, assertion failures. etc).

Ultimately the ring buffer mechanism needs to the fixed.
dapl/common/dapl_evd_dequeue.c
dapl/common/dapl_evd_util.c
dapl/common/dapl_ring_buffer_util.c
dapl/include/dapl.h
dapl/udapl/dapl_evd_wait.c