diff --git a/src/mca/plm/base/plm_base_receive.c b/src/mca/plm/base/plm_base_receive.c index 05af9099a3..34110970bb 100644 --- a/src/mca/plm/base/plm_base_receive.c +++ b/src/mca/plm/base/plm_base_receive.c @@ -271,7 +271,10 @@ void prte_plm_base_recv(int status, pmix_proc_t *sender, /* try defaulting to parent session */ if (NULL != (parent = prte_get_job_data_object(nptr->nspace))) { session = parent->session; - + if (NULL == session) { + rc = PRTE_ERR_NOT_FOUND; + goto ANSWER_LAUNCH; + } // (RHC) This next clause merits some thought - not sure I fully // understand the conditionals } else if (!prte_pmix_server_globals.scheduler_connected || diff --git a/src/prted/prted_comm.c b/src/prted/prted_comm.c index 6466f704d4..c78fa51d88 100644 --- a/src/prted/prted_comm.c +++ b/src/prted/prted_comm.c @@ -502,7 +502,6 @@ void prte_daemon_recv(int status, pmix_proc_t *sender, PMIX_LOAD_PROCID(&pname, job, PMIX_RANK_WILDCARD); prte_pmix_server_clear(&pname); - PMIX_RELEASE(jdata); break; /**** REPORT TOPOLOGY COMMAND ****/ diff --git a/src/tools/prte/prte.c b/src/tools/prte/prte.c index 2bb9f571d5..ce69cc00ee 100644 --- a/src/tools/prte/prte.c +++ b/src/tools/prte/prte.c @@ -1401,6 +1401,7 @@ static int prep_singleton(const char *name) jdata = PMIX_NEW(prte_job_t); PMIX_LOAD_NSPACE(jdata->nspace, ptr); free(ptr); + jdata->session = prte_default_session; rc = prte_set_job_data_object(jdata); if (PRTE_SUCCESS != rc) { PRTE_UPDATE_EXIT_STATUS(PRTE_ERR_FATAL);