1
1

pml/ob1: mca_pml_ob1_recv must have memchecker mark the buffer as defined upon success

this is generally done in mca_pml_ob1_recv_request_free(), but this is not invoked
in via mca_pml_ob1_recv(), so do it manually

Thanks Yvan Fournier for the report

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Этот коммит содержится в:
Gilles Gouaillardet 2016-11-07 09:23:59 +09:00
родитель f11b0c7edf
Коммит 023d18abae

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

@ -30,6 +30,7 @@
#include "pml_ob1_recvfrag.h"
#include "ompi/peruse/peruse-internal.h"
#include "ompi/message/message.h"
#include "ompi/memchecker.h"
/**
* Single usage request. As we allow recursive calls to recv
@ -139,6 +140,17 @@ int mca_pml_ob1_recv(void *addr,
rc = recvreq->req_recv.req_base.req_ompi.req_status.MPI_ERROR;
if (recvreq->req_recv.req_base.req_pml_complete) {
/* make buffer defined when the request is compeleted,
and before releasing the objects. */
MEMCHECKER(
memchecker_call(&opal_memchecker_base_mem_defined,
recvreq->req_recv.req_base.req_addr,
recvreq->req_recv.req_base.req_count,
recvreq->req_recv.req_base.req_datatype);
);
}
if (OPAL_UNLIKELY(ompi_mpi_thread_multiple || NULL != mca_pml_ob1_recvreq)) {
MCA_PML_OB1_RECV_REQUEST_RETURN(recvreq);
} else {