diff --git a/orte/mca/gpr/replica/communications/gpr_replica_recv_proxy_msgs.c b/orte/mca/gpr/replica/communications/gpr_replica_recv_proxy_msgs.c index 708c3b3b77..3b555c38d5 100644 --- a/orte/mca/gpr/replica/communications/gpr_replica_recv_proxy_msgs.c +++ b/orte/mca/gpr/replica/communications/gpr_replica_recv_proxy_msgs.c @@ -71,10 +71,11 @@ void orte_gpr_replica_recv(int status, orte_process_name_t* sender, ORTE_ERROR_LOG(rc); } } + + OPAL_THREAD_UNLOCK(&orte_gpr_replica_globals.mutex); /* reissue the non-blocking receive before returning */ orte_rml.recv_buffer_nb(ORTE_RML_NAME_ANY, ORTE_RML_TAG_GPR, 0, orte_gpr_replica_recv, NULL); - OPAL_THREAD_UNLOCK(&orte_gpr_replica_globals.mutex); return; } diff --git a/orte/tools/orted/orted.c b/orte/tools/orted/orted.c index 7d348e1ad9..2647bd1f9d 100644 --- a/orte/tools/orted/orted.c +++ b/orte/tools/orted/orted.c @@ -519,13 +519,14 @@ static void orte_daemon_recv(int status, orte_process_name_t* sender, OBJ_RELEASE(answer); DONE: + OPAL_THREAD_UNLOCK(&orted_globals.mutex); + /* reissue the non-blocking receive */ ret = orte_rml.recv_buffer_nb(ORTE_RML_NAME_ANY, ORTE_RML_TAG_DAEMON, 0, orte_daemon_recv, NULL); if (ret != ORTE_SUCCESS && ret != ORTE_ERR_NOT_IMPLEMENTED) { ORTE_ERROR_LOG(ret); } - OPAL_THREAD_UNLOCK(&orted_globals.mutex); return; }