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.
Этот коммит содержится в:
родитель
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:
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user