1
1

pml/ob1: correctly reset receive request type before init

recvreq->req_recv.req_base.req_type should always be set before invoking
MCA_PML_OB1_RECV_REQUEST_INIT(recvreq, ...) otherwise, the previous type
might be set, and you could end up with MPC_PML_REQUEST_IMPROBE when
MCA_PML_REQUEST_RECV is expected.

Thanks Chris Pattison for the report and test case.

Fixes open-mpi/ompi#2275
Этот коммит содержится в:
Gilles Gouaillardet 2016-10-24 16:45:52 +09:00
родитель 055df6f7c6
Коммит 4a886ac4cc

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

@ -14,7 +14,9 @@
* reserved.
* Copyright (c) 2010-2012 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011 Sandia National Laboratories. All rights reserved.
* Copyright (c) 2014 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2014 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
@ -51,6 +53,7 @@ int mca_pml_ob1_irecv_init(void *addr,
if (NULL == recvreq)
return OMPI_ERR_TEMP_OUT_OF_RESOURCE;
recvreq->req_recv.req_base.req_type = MCA_PML_REQUEST_RECV;
MCA_PML_OB1_RECV_REQUEST_INIT(recvreq,
addr,
count, datatype, src, tag, comm, true);
@ -82,6 +85,7 @@ int mca_pml_ob1_irecv(void *addr,
if (NULL == recvreq)
return OMPI_ERR_TEMP_OUT_OF_RESOURCE;
recvreq->req_recv.req_base.req_type = MCA_PML_REQUEST_RECV;
MCA_PML_OB1_RECV_REQUEST_INIT(recvreq,
addr,
count, datatype, src, tag, comm, false);
@ -118,6 +122,7 @@ int mca_pml_ob1_recv(void *addr,
return OMPI_ERR_TEMP_OUT_OF_RESOURCE;
}
recvreq->req_recv.req_base.req_type = MCA_PML_REQUEST_RECV;
MCA_PML_OB1_RECV_REQUEST_INIT(recvreq, addr, count, datatype,
src, tag, comm, false);