diff --git a/src/mca/odls/base/odls_base_default_fns.c b/src/mca/odls/base/odls_base_default_fns.c index 153350f3bd..f70d3262ff 100644 --- a/src/mca/odls/base/odls_base_default_fns.c +++ b/src/mca/odls/base/odls_base_default_fns.c @@ -1167,7 +1167,8 @@ void prte_odls_base_default_launch_local(int fd, short sd, void *cbdata) PMIX_ACQUIRE_OBJECT(caddy); - prte_output_verbose(5, prte_odls_base_framework.framework_output, "%s local:launch", + prte_output_verbose(5, prte_odls_base_framework.framework_output, + "%s local:launch", PRTE_NAME_PRINT(PRTE_PROC_MY_NAME)); PMIX_LOAD_NSPACE(job, caddy->job); @@ -1193,7 +1194,8 @@ void prte_odls_base_default_launch_local(int fd, short sd, void *cbdata) if (0 == jobdat->num_local_procs) { /* indicate that we are done trying to launch them */ prte_output_verbose(5, prte_odls_base_framework.framework_output, - "%s local:launch no local procs", PRTE_NAME_PRINT(PRTE_PROC_MY_NAME)); + "%s local:launch no local procs", + PRTE_NAME_PRINT(PRTE_PROC_MY_NAME)); goto GETOUT; } @@ -1243,9 +1245,8 @@ void prte_odls_base_default_launch_local(int fd, short sd, void *cbdata) if (2 < caddy->retries) { /* tried enough - give up */ for (idx = 0; idx < prte_local_children->size; idx++) { - if (NULL - == (child = (prte_proc_t *) pmix_pointer_array_get_item(prte_local_children, - idx))) { + child = (prte_proc_t *) pmix_pointer_array_get_item(prte_local_children, idx); + if (NULL == child) { continue; } if (PMIX_CHECK_NSPACE(job, child->name.nspace)) { @@ -1262,7 +1263,8 @@ void prte_odls_base_default_launch_local(int fd, short sd, void *cbdata) } for (j = 0; j < jobdat->apps->size; j++) { - if (NULL == (app = (prte_app_context_t *) pmix_pointer_array_get_item(jobdat->apps, j))) { + app = (prte_app_context_t *) pmix_pointer_array_get_item(jobdat->apps, j); + if (NULL == app) { continue; } @@ -1346,40 +1348,10 @@ void prte_odls_base_default_launch_local(int fd, short sd, void *cbdata) goto GETOUT; } - /* Search for the OMPI_exec_path and PATH settings in the environment. */ - for (argvptr = app->env; *argvptr != NULL; argvptr++) { - if (0 == strncmp("OMPI_exec_path=", *argvptr, 15)) { - mpiexec_pathenv = *argvptr + 15; - } - if (0 == strncmp("PATH=", *argvptr, 5)) { - pathenv = *argvptr + 5; - } - } - - /* If OMPI_exec_path is set (meaning --path was used), then create a - temporary environment to be used in the search for the executable. - The PATH setting in this temporary environment is a combination of - the OMPI_exec_path and PATH values. If OMPI_exec_path is not set, - then just use existing environment with PATH in it. */ - if (NULL != mpiexec_pathenv) { - argvptr = NULL; - if (pathenv != NULL) { - pmix_asprintf(&full_search, "%s:%s", mpiexec_pathenv, pathenv); - } else { - pmix_asprintf(&full_search, "%s", mpiexec_pathenv); - } - pmix_setenv("PATH", full_search, true, &argvptr); - free(full_search); - } else { - argvptr = app->env; - } - - rc = pmix_util_check_context_app(&app->app, app->cwd, argvptr); + rc = pmix_util_check_context_app(&app->app, app->cwd, app->env); /* do not ERROR_LOG - it will be reported elsewhere */ - if (NULL != mpiexec_pathenv) { - pmix_argv_free(argvptr); - } if (PMIX_SUCCESS != rc) { + rc = PRTE_ERR_EXE_NOT_FOUND; /* cycle through children to find those for this jobid */ for (idx = 0; idx < prte_local_children->size; idx++) { child = (prte_proc_t *) pmix_pointer_array_get_item(prte_local_children, idx); diff --git a/src/mca/state/dvm/state_dvm.c b/src/mca/state/dvm/state_dvm.c index 369985844c..c34bd808e6 100644 --- a/src/mca/state/dvm/state_dvm.c +++ b/src/mca/state/dvm/state_dvm.c @@ -492,6 +492,14 @@ static void opcbfunc(pmix_status_t status, void *cbdata) lk->status = prte_pmix_convert_status(status); PRTE_PMIX_WAKEUP_THREAD(lk); } +static void lkcbfunc(pmix_status_t status, void *cbdata) +{ + prte_pmix_lock_t *lk = (prte_pmix_lock_t *) cbdata; + + PMIX_POST_OBJECT(lk); + lk->status = prte_pmix_convert_status(status); + PRTE_PMIX_WAKEUP_THREAD(lk); +} static void check_complete(int fd, short args, void *cbdata) { prte_state_caddy_t *caddy = (prte_state_caddy_t *) cbdata; @@ -610,7 +618,24 @@ static void check_complete(int fd, short args, void *cbdata) char *msg; msg = prte_dump_aborted_procs(jdata); if (NULL != msg) { - prte_output(prte_clean_output, "%s", msg); + pmix_byte_object_t bo; + PMIX_BYTE_OBJECT_CONSTRUCT(&bo); + bo.bytes = (char *) msg; + bo.size = strlen(msg) + 1; + PRTE_PMIX_CONSTRUCT_LOCK(&lock); + rc = PMIx_server_IOF_deliver(&prte_process_info.myproc, + PMIX_FWD_STDDIAG_CHANNEL, + &bo, NULL, 0, lkcbfunc, (void *) &lock); + if (PMIX_SUCCESS != rc) { + PMIX_ERROR_LOG(rc); + } else { + /* wait for completion */ + PRTE_PMIX_WAIT_THREAD(&lock); + if (PMIX_SUCCESS != lock.status) { + PMIX_ERROR_LOG(lock.status); + } + } + PRTE_PMIX_DESTRUCT_LOCK(&lock); free(msg); } }