1
1

Avoid hanging in show_help if PMIx was unable to initialize

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
Ralph Castain 2016-12-03 10:11:19 -08:00
родитель b030f9acc0
Коммит a43fae74a5
2 изменённых файлов: 29 добавлений и 16 удалений

Просмотреть файл

@ -1328,12 +1328,7 @@ static void pmix2x_log(opal_list_t *info,
opal_value_t *ival; opal_value_t *ival;
size_t n, ninfo; size_t n, ninfo;
pmix2x_opcaddy_t *cd; pmix2x_opcaddy_t *cd;
pmix_status_t prc;
/* bozo check */
if (NULL == info || 0 == (ninfo = opal_list_get_size(info))) {
rc = OPAL_ERR_BAD_PARAM;
goto CLEANUP;
}
/* setup the operation */ /* setup the operation */
cd = OBJ_NEW(pmix2x_opcaddy_t); cd = OBJ_NEW(pmix2x_opcaddy_t);
@ -1341,6 +1336,12 @@ static void pmix2x_log(opal_list_t *info,
cd->cbdata = cbdata; cd->cbdata = cbdata;
cd->ninfo = ninfo; cd->ninfo = ninfo;
/* bozo check */
if (NULL == info || 0 == (ninfo = opal_list_get_size(info))) {
rc = OPAL_ERR_BAD_PARAM;
goto CLEANUP;
}
/* convert the list to an array of info objects */ /* convert the list to an array of info objects */
PMIX_INFO_CREATE(cd->info, cd->ninfo); PMIX_INFO_CREATE(cd->info, cd->ninfo);
n=0; n=0;
@ -1351,14 +1352,19 @@ static void pmix2x_log(opal_list_t *info,
} }
/* pass it down */ /* pass it down */
PMIx_Log_nb(cd->info, cd->ninfo, NULL, 0, if (PMIX_SUCCESS != (prc = PMIx_Log_nb(cd->info, cd->ninfo, NULL, 0,
opcbfunc, cd); opcbfunc, cd))) {
/* do not hang! */
rc = pmix2x_convert_rc(prc);
goto CLEANUP;
}
return; return;
CLEANUP: CLEANUP:
if (NULL != cbfunc) { if (NULL != cbfunc) {
cbfunc(rc, cbdata); cbfunc(rc, cbdata);
} }
OBJ_RELEASE(cd);
} }
/**** INSTANTIATE INTERNAL CLASSES ****/ /**** INSTANTIATE INTERNAL CLASSES ****/

Просмотреть файл

@ -1328,12 +1328,7 @@ static void pmix2x_log(opal_list_t *info,
opal_value_t *ival; opal_value_t *ival;
size_t n, ninfo; size_t n, ninfo;
pmix2x_opcaddy_t *cd; pmix2x_opcaddy_t *cd;
pmix_status_t prc;
/* bozo check */
if (NULL == info || 0 == (ninfo = opal_list_get_size(info))) {
rc = OPAL_ERR_BAD_PARAM;
goto CLEANUP;
}
/* setup the operation */ /* setup the operation */
cd = OBJ_NEW(pmix2x_opcaddy_t); cd = OBJ_NEW(pmix2x_opcaddy_t);
@ -1341,6 +1336,12 @@ static void pmix2x_log(opal_list_t *info,
cd->cbdata = cbdata; cd->cbdata = cbdata;
cd->ninfo = ninfo; cd->ninfo = ninfo;
/* bozo check */
if (NULL == info || 0 == (ninfo = opal_list_get_size(info))) {
rc = OPAL_ERR_BAD_PARAM;
goto CLEANUP;
}
/* convert the list to an array of info objects */ /* convert the list to an array of info objects */
PMIX_INFO_CREATE(cd->info, cd->ninfo); PMIX_INFO_CREATE(cd->info, cd->ninfo);
n=0; n=0;
@ -1351,14 +1352,20 @@ static void pmix2x_log(opal_list_t *info,
} }
/* pass it down */ /* pass it down */
PMIx_Log_nb(cd->info, cd->ninfo, NULL, 0, if (PMIX_SUCCESS != (prc = PMIx_Log_nb(cd->info, cd->ninfo, NULL, 0,
opcbfunc, cd); opcbfunc, cd))) {
/* do not hang! */
rc = pmix2x_convert_rc(prc);
goto CLEANUP;
}
return; return;
CLEANUP: CLEANUP:
if (NULL != cbfunc) { if (NULL != cbfunc) {
cbfunc(rc, cbdata); cbfunc(rc, cbdata);
} }
OBJ_RELEASE(cd);
} }
/**** INSTANTIATE INTERNAL CLASSES ****/ /**** INSTANTIATE INTERNAL CLASSES ****/