From 8ae10c9e1a042bcf2226b200da12ce21a5199120 Mon Sep 17 00:00:00 2001 From: Ralph Castain <rhc@open-mpi.org> Date: Fri, 13 Oct 2017 19:30:28 -0700 Subject: [PATCH] Ensure we exit with an appropriate error code when hitting a PMI2 error Signed-off-by: Ralph Castain <rhc@open-mpi.org> --- opal/mca/pmix/s2/pmix_s2.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/opal/mca/pmix/s2/pmix_s2.c b/opal/mca/pmix/s2/pmix_s2.c index 0afeb8d171..b98905f4e1 100644 --- a/opal/mca/pmix/s2/pmix_s2.c +++ b/opal/mca/pmix/s2/pmix_s2.c @@ -195,6 +195,7 @@ static int s2_init(opal_list_t *ilist) } if( size < 0 || rank < 0 ){ opal_show_help("help-pmix-base.txt", "pmix2-init-returned-bad-values", true); + ret = OPAL_ERR_BAD_PARAM; goto err_exit; } @@ -218,6 +219,7 @@ static int s2_init(opal_list_t *ilist) if( PMI2_SUCCESS != rc ) { OPAL_PMI_ERROR(rc, "PMI2_Job_GetId"); free(pmix_kvs_name); + ret = OPAL_ERR_BAD_PARAM; goto err_exit; } @@ -262,8 +264,8 @@ static int s2_init(opal_list_t *ilist) kv.key = strdup(OPAL_PMIX_JOB_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = size; - if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(rc); + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { + OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; } @@ -284,6 +286,7 @@ static int s2_init(opal_list_t *ilist) rc = PMI2_Info_GetJobAttr("universeSize", buf, 16, &found); if( PMI2_SUCCESS != rc ) { OPAL_PMI_ERROR(rc, "PMI_Get_universe_size"); + ret = OPAL_ERR_BAD_PARAM; goto err_exit; } /* save it */ @@ -291,8 +294,8 @@ static int s2_init(opal_list_t *ilist) kv.key = strdup(OPAL_PMIX_UNIV_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = atoi(buf); - if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(rc); + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { + OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; } @@ -311,22 +314,23 @@ static int s2_init(opal_list_t *ilist) char *pmapping = (char*)malloc(PMI2_MAX_VALLEN); if( pmapping == NULL ){ - rc = OPAL_ERR_OUT_OF_RESOURCE; - OPAL_ERROR_LOG(rc); - return rc; + ret = OPAL_ERR_OUT_OF_RESOURCE; + OPAL_ERROR_LOG(ret); + goto err_exit; } rc = PMI2_Info_GetJobAttr("PMI_process_mapping", pmapping, PMI2_MAX_VALLEN, &found); if( !found || PMI2_SUCCESS != rc ) { OPAL_PMI_ERROR(rc,"PMI2_Info_GetJobAttr"); - return OPAL_ERROR; + ret = OPAL_ERR_BAD_PARAM; + goto err_exit; } s2_lranks = mca_common_pmi2_parse_pmap(pmapping, s2_pname.vpid, &my_node, &s2_nlranks); if (NULL == s2_lranks) { - rc = OPAL_ERR_OUT_OF_RESOURCE; - OPAL_ERROR_LOG(rc); - return rc; + ret = OPAL_ERR_OUT_OF_RESOURCE; + OPAL_ERROR_LOG(ret); + goto err_exit; } free(pmapping); @@ -336,8 +340,8 @@ static int s2_init(opal_list_t *ilist) kv.key = strdup(OPAL_PMIX_LOCAL_SIZE); kv.type = OPAL_UINT32; kv.data.uint32 = s2_nlranks; - if (OPAL_SUCCESS != (rc = opal_pmix_base_store(&wildcard_rank, &kv))) { - OPAL_ERROR_LOG(rc); + if (OPAL_SUCCESS != (ret = opal_pmix_base_store(&wildcard_rank, &kv))) { + OPAL_ERROR_LOG(ret); OBJ_DESTRUCT(&kv); goto err_exit; }