1
1

Don't complete send request before we've got completion on the first rndv packet.

Sender can receive and complete PUT request before it gets completion on the first rndv packet. senreq struct may be reused for the next MPI_Send and unexpected completion mess up the things. I sometimes got SEGV and sometimes data corruption.

This commit was SVN r10301.
Этот коммит содержится в:
Gleb Natapov 2006-06-12 14:00:43 +00:00
родитель b0f3745791
Коммит 48d348b577

Просмотреть файл

@ -1036,7 +1036,10 @@ static void mca_pml_ob1_put_completion(
/* check for request completion */
if( OPAL_THREAD_ADD_SIZE_T(&sendreq->req_bytes_delivered, frag->rdma_length)
>= sendreq->req_send.req_bytes_packed) {
MCA_PML_OB1_SEND_REQUEST_PML_COMPLETE(sendreq);
/* if we've got completion on rndv packet */
if (OPAL_THREAD_ADD32(&sendreq->req_state, 1) == 2) {
MCA_PML_OB1_SEND_REQUEST_PML_COMPLETE(sendreq);
}
}
cleanup: