diff --git a/ompi/mpi/c/start.c b/ompi/mpi/c/start.c index 0fbaa4013d1..4c808c8c87f 100644 --- a/ompi/mpi/c/start.c +++ b/ompi/mpi/c/start.c @@ -78,13 +78,14 @@ int MPI_Start(MPI_Request *request) case OMPI_REQUEST_PML: case OMPI_REQUEST_COLL: case OMPI_REQUEST_PART: - if ( MPI_PARAM_CHECK && !(*request)->req_persistent) { + if ( MPI_PARAM_CHECK && !((*request)->req_persistent && + OMPI_REQUEST_INACTIVE == (*request)->req_state)) { return OMPI_ERRHANDLER_NOHANDLE_INVOKE(MPI_ERR_REQUEST, FUNC_NAME); } ret = (*request)->req_start(1, request); - return ret; + return OMPI_ERRHANDLER_NOHANDLE_INVOKE(ret, FUNC_NAME); case OMPI_REQUEST_NOOP: /** diff --git a/ompi/mpi/c/startall.c b/ompi/mpi/c/startall.c index 1b223bb88aa..0804278f419 100644 --- a/ompi/mpi/c/startall.c +++ b/ompi/mpi/c/startall.c @@ -69,6 +69,7 @@ int MPI_Startall(int count, MPI_Request requests[]) ! requests[i]->req_persistent || (OMPI_REQUEST_PML != requests[i]->req_type && OMPI_REQUEST_COLL != requests[i]->req_type && + OMPI_REQUEST_PART != requests[i]->req_type && OMPI_REQUEST_NOOP != requests[i]->req_type)) { rc = MPI_ERR_REQUEST; break;