Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
prov/sockets: Fix ofiwg#3217, bug in buffered receive path
This bug was found by testing GASNet, which has some tests that very rigourously stress messaging endpoints. The behaviour was that tests would sporadically hang when put under heavy loads. The root cause is found in the provider's handling of previously buffered messages (ones that came in without a matching receive buffer). When the handler grabbed a posted buffer to place a buffered message into, it was not marking that receive buffer as free once it was done with it, which causes buffers posted with FI_MULTI_RECV to become unusable in the future, which leads to the provider running out of receive buffers. After fixing the root cause, there was also an issue in calculating the position in which to place a message in such a multi-recv buffer, which this patch also fixes. Signed-off-by: Erik Paulson <erik.r.paulson@intel.com>
- Loading branch information