diff --git a/ompi/mca/pml/base/pml_base_bsend.c b/ompi/mca/pml/base/pml_base_bsend.c index 1684e16838..13365a4e12 100644 --- a/ompi/mca/pml/base/pml_base_bsend.c +++ b/ompi/mca/pml/base/pml_base_bsend.c @@ -292,6 +292,9 @@ int mca_pml_base_bsend_request_alloc(ompi_request_t* request) /* release resources when request is freed */ sendreq->req_base.req_pml_complete = true; OPAL_THREAD_UNLOCK(&mca_pml_bsend_mutex); + /* progress communications, with the hope that more resources + * will be freed */ + opal_progress(); return OMPI_ERR_BUFFER; } @@ -322,6 +325,9 @@ void* mca_pml_base_bsend_request_alloc_buf( size_t length ) if(NULL == buf) { /* release resources when request is freed */ OPAL_THREAD_UNLOCK(&mca_pml_bsend_mutex); + /* progress communications, with the hope that more resources + * will be freed */ + opal_progress(); return NULL; } diff --git a/ompi/mca/pml/cm/pml_cm_sendreq.h b/ompi/mca/pml/cm/pml_cm_sendreq.h index 53ae295e82..079bb18ff1 100644 --- a/ompi/mca/pml/cm/pml_cm_sendreq.h +++ b/ompi/mca/pml/cm/pml_cm_sendreq.h @@ -225,8 +225,6 @@ do { \ sendreq->req_buff = \ mca_pml_base_bsend_request_alloc_buf(sendreq->req_count); \ if (NULL == sendreq->req_buff) { \ - /* progress to complete outstanding sends and free resources */ \ - opal_progress(); \ ret = MPI_ERR_BUFFER; \ } else { \ iov.iov_base = (IOVBASE_TYPE*)sendreq->req_buff; \