Skip to content

Commit cda9bd3

Browse files
author
rhc54
authored
Merge pull request #2511 from rhc54/topic/nohang
Avoid hanging in show_help if PMIx was unable to initialize
2 parents fa04ba9 + a43fae7 commit cda9bd3

File tree

2 files changed

+29
-16
lines changed

2 files changed

+29
-16
lines changed

opal/mca/pmix/ext2x/pmix2x.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1328,19 +1328,20 @@ static void pmix2x_log(opal_list_t *info,
13281328
opal_value_t *ival;
13291329
size_t n, ninfo;
13301330
pmix2x_opcaddy_t *cd;
1331-
1332-
/* bozo check */
1333-
if (NULL == info || 0 == (ninfo = opal_list_get_size(info))) {
1334-
rc = OPAL_ERR_BAD_PARAM;
1335-
goto CLEANUP;
1336-
}
1331+
pmix_status_t prc;
13371332

13381333
/* setup the operation */
13391334
cd = OBJ_NEW(pmix2x_opcaddy_t);
13401335
cd->opcbfunc = cbfunc;
13411336
cd->cbdata = cbdata;
13421337
cd->ninfo = ninfo;
13431338

1339+
/* bozo check */
1340+
if (NULL == info || 0 == (ninfo = opal_list_get_size(info))) {
1341+
rc = OPAL_ERR_BAD_PARAM;
1342+
goto CLEANUP;
1343+
}
1344+
13441345
/* convert the list to an array of info objects */
13451346
PMIX_INFO_CREATE(cd->info, cd->ninfo);
13461347
n=0;
@@ -1351,14 +1352,19 @@ static void pmix2x_log(opal_list_t *info,
13511352
}
13521353

13531354
/* pass it down */
1354-
PMIx_Log_nb(cd->info, cd->ninfo, NULL, 0,
1355-
opcbfunc, cd);
1355+
if (PMIX_SUCCESS != (prc = PMIx_Log_nb(cd->info, cd->ninfo, NULL, 0,
1356+
opcbfunc, cd))) {
1357+
/* do not hang! */
1358+
rc = pmix2x_convert_rc(prc);
1359+
goto CLEANUP;
1360+
}
13561361
return;
13571362

13581363
CLEANUP:
13591364
if (NULL != cbfunc) {
13601365
cbfunc(rc, cbdata);
13611366
}
1367+
OBJ_RELEASE(cd);
13621368
}
13631369

13641370
/**** INSTANTIATE INTERNAL CLASSES ****/

opal/mca/pmix/pmix2x/pmix2x.c

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1328,19 +1328,20 @@ static void pmix2x_log(opal_list_t *info,
13281328
opal_value_t *ival;
13291329
size_t n, ninfo;
13301330
pmix2x_opcaddy_t *cd;
1331-
1332-
/* bozo check */
1333-
if (NULL == info || 0 == (ninfo = opal_list_get_size(info))) {
1334-
rc = OPAL_ERR_BAD_PARAM;
1335-
goto CLEANUP;
1336-
}
1331+
pmix_status_t prc;
13371332

13381333
/* setup the operation */
13391334
cd = OBJ_NEW(pmix2x_opcaddy_t);
13401335
cd->opcbfunc = cbfunc;
13411336
cd->cbdata = cbdata;
13421337
cd->ninfo = ninfo;
13431338

1339+
/* bozo check */
1340+
if (NULL == info || 0 == (ninfo = opal_list_get_size(info))) {
1341+
rc = OPAL_ERR_BAD_PARAM;
1342+
goto CLEANUP;
1343+
}
1344+
13441345
/* convert the list to an array of info objects */
13451346
PMIX_INFO_CREATE(cd->info, cd->ninfo);
13461347
n=0;
@@ -1351,14 +1352,20 @@ static void pmix2x_log(opal_list_t *info,
13511352
}
13521353

13531354
/* pass it down */
1354-
PMIx_Log_nb(cd->info, cd->ninfo, NULL, 0,
1355-
opcbfunc, cd);
1355+
if (PMIX_SUCCESS != (prc = PMIx_Log_nb(cd->info, cd->ninfo, NULL, 0,
1356+
opcbfunc, cd))) {
1357+
/* do not hang! */
1358+
rc = pmix2x_convert_rc(prc);
1359+
goto CLEANUP;
1360+
}
1361+
13561362
return;
13571363

13581364
CLEANUP:
13591365
if (NULL != cbfunc) {
13601366
cbfunc(rc, cbdata);
13611367
}
1368+
OBJ_RELEASE(cd);
13621369
}
13631370

13641371
/**** INSTANTIATE INTERNAL CLASSES ****/

0 commit comments

Comments
 (0)