diff --git a/opal/mca/pmix/pmix3x/pmix/VERSION b/opal/mca/pmix/pmix3x/pmix/VERSION index 4d85c8d3bc..42493cdfb3 100644 --- a/opal/mca/pmix/pmix3x/pmix/VERSION +++ b/opal/mca/pmix/pmix3x/pmix/VERSION @@ -30,7 +30,7 @@ greek= # command, or with the date (if "git describe" fails) in the form of # "date". -repo_rev=gita741222 +repo_rev=gitd8068ab # If tarball_version is not empty, it is used as the version string in # the tarball filename, regardless of all other versions listed in @@ -44,7 +44,7 @@ tarball_version= # The date when this release was created -date="Apr 16, 2018" +date="Apr 17, 2018" # The shared library version of each of PMIx's public libraries. # These versions are maintained in accordance with the "Library diff --git a/opal/mca/pmix/pmix3x/pmix/include/pmix_common.h.in b/opal/mca/pmix/pmix3x/pmix/include/pmix_common.h.in index fea2301a1b..e306625647 100644 --- a/opal/mca/pmix/pmix3x/pmix/include/pmix_common.h.in +++ b/opal/mca/pmix/pmix3x/pmix/include/pmix_common.h.in @@ -105,18 +105,6 @@ typedef uint32_t pmix_rank_t; /* define an invalid value */ #define PMIX_RANK_INVALID UINT32_MAX-3 -/**** PMIX ENVIRONMENTAL PARAMETERS ****/ -/* There are a few environmental parameters used by PMIx for - * various operations. While there is no "definition" of them - * as values, we do record them here for informational purposes. - * - * PMIX_LAUNCHER_PAUSE_FOR_TOOL - if set to non-zero value, instructs - * launchers (e.g., "prun") to stop prior to spawning the application until - * a tool can connect with further instructions. This envar will be - * set by the tool and is _not_ intended for the direct use of users. - * - */ - /**** PMIX ENVIRONMENTAL PARAMETERS ****/ /* There are a few environmental parameters used by PMIx for * various operations. While there is no "definition" of them diff --git a/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/base/pnet_base_fns.c b/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/base/pnet_base_fns.c index b5a38ea177..b9ddd35997 100644 --- a/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/base/pnet_base_fns.c +++ b/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/base/pnet_base_fns.c @@ -76,10 +76,10 @@ pmix_status_t pmix_pnet_base_allocate(char *nspace, if (PMIX_SUCCESS == (rc = active->module->allocate(nptr, NULL, ilist))) { break; } - } - if (PMIX_ERR_TAKE_NEXT_OPTION != rc) { - /* true error */ - return rc; + if (PMIX_ERR_TAKE_NEXT_OPTION != rc) { + /* true error */ + return rc; + } } } } else { @@ -90,10 +90,10 @@ pmix_status_t pmix_pnet_base_allocate(char *nspace, if (PMIX_SUCCESS == (rc = active->module->allocate(nptr, &info[n], ilist))) { break; } - } - if (PMIX_ERR_TAKE_NEXT_OPTION != rc) { - /* true error */ - return rc; + if (PMIX_ERR_TAKE_NEXT_OPTION != rc) { + /* true error */ + return rc; + } } } } @@ -395,6 +395,7 @@ static void cicbfunc(pmix_status_t status, } /* now call the requestor back */ lock->cbfunc(ret, lock->info, lock->ninfo, lock->cbdata, cirelease, lock); + PMIX_RELEASE_THREAD(&lock->lock); return; error: @@ -496,16 +497,23 @@ pmix_status_t pmix_pnet_base_harvest_envars(char **incvars, char **excvars, cs_env = strdup(environ[i]); kv = PMIX_NEW(pmix_kval_t); if (NULL == kv) { + free(cs_env); return PMIX_ERR_OUT_OF_RESOURCE; } kv->key = strdup(PMIX_SET_ENVAR); kv->value = (pmix_value_t*)malloc(sizeof(pmix_value_t)); if (NULL == kv->value) { PMIX_RELEASE(kv); + free(cs_env); return PMIX_ERR_OUT_OF_RESOURCE; } kv->value->type = PMIX_ENVAR; string_key = strchr(cs_env, '='); + if (NULL == string_key) { + free(cs_env); + PMIX_RELEASE(kv); + return PMIX_ERR_BAD_PARAM; + } *string_key = '\0'; ++string_key; PMIX_ENVAR_LOAD(&kv->value->data.envar, cs_env, string_key, ':'); diff --git a/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/tcp/pnet_tcp.c b/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/tcp/pnet_tcp.c index 13643671bf..61a736aec1 100644 --- a/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/tcp/pnet_tcp.c +++ b/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/tcp/pnet_tcp.c @@ -540,25 +540,25 @@ static pmix_status_t allocate(pmix_nspace_t *nptr, if (NULL == avail) { continue; } - /* setup to track the assignment */ - trk = PMIX_NEW(tcp_port_tracker_t); - if (NULL == trk) { - pmix_argv_free(reqs); - return PMIX_ERR_NOMEM; - } - trk->nspace = strdup(nptr->nspace); - PMIX_RETAIN(avail); - trk->src = avail; - pmix_list_append(&allocations, &trk->super); - rc = process_request(nptr, idkey, ports_per_node, trk, &mylist); - if (PMIX_SUCCESS != rc) { - /* return the allocated ports */ - pmix_list_remove_item(&allocations, &trk->super); - PMIX_RELEASE(trk); - return rc; - } - allocated = true; } + /* setup to track the assignment */ + trk = PMIX_NEW(tcp_port_tracker_t); + if (NULL == trk) { + pmix_argv_free(reqs); + return PMIX_ERR_NOMEM; + } + trk->nspace = strdup(nptr->nspace); + PMIX_RETAIN(avail); + trk->src = avail; + pmix_list_append(&allocations, &trk->super); + rc = process_request(nptr, idkey, ports_per_node, trk, &mylist); + if (PMIX_SUCCESS != rc) { + /* return the allocated ports */ + pmix_list_remove_item(&allocations, &trk->super); + PMIX_RELEASE(trk); + return rc; + } + allocated = true; } } else { avail = (tcp_available_ports_t*)pmix_list_get_first(&available); @@ -695,7 +695,8 @@ static pmix_status_t setup_local_network(pmix_nspace_t *nptr, PMIX_BFROPS_VALUE_XFER(rc, pmix_globals.mypeer, &jinfo[m].value, kv->value); /* if this is the ID key, save it */ - if (0 == strncmp(kv->key, PMIX_ALLOC_NETWORK_ID, PMIX_MAX_KEYLEN)) { + if (NULL == idkey && + 0 == strncmp(kv->key, PMIX_ALLOC_NETWORK_ID, PMIX_MAX_KEYLEN)) { idkey = strdup(kv->value->data.string); } ++m; @@ -730,6 +731,9 @@ static pmix_status_t setup_local_network(pmix_nspace_t *nptr, } } } + if (NULL != idkey) { + free(idkey); + } return PMIX_SUCCESS; } diff --git a/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/test/pnet_test.c b/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/test/pnet_test.c index 6a109dd4ed..04532fabd0 100644 --- a/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/test/pnet_test.c +++ b/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/test/pnet_test.c @@ -94,7 +94,7 @@ static pmix_status_t allocate(pmix_nspace_t *nptr, pmix_list_t *ilist) { pmix_kval_t *kv; - bool seckey; + bool seckey = false; pmix_list_t mylist; size_t n, nreqs=0; pmix_info_t *requests = NULL; @@ -319,7 +319,8 @@ static pmix_status_t setup_local_network(pmix_nspace_t *nptr, PMIX_BFROPS_VALUE_XFER(rc, pmix_globals.mypeer, &jinfo[m].value, kv->value); /* if this is the ID key, save it */ - if (0 == strncmp(kv->key, PMIX_ALLOC_NETWORK_ID, PMIX_MAX_KEYLEN)) { + if (NULL == idkey && + 0 == strncmp(kv->key, PMIX_ALLOC_NETWORK_ID, PMIX_MAX_KEYLEN)) { idkey = strdup(kv->value->data.string); } ++m; @@ -354,7 +355,9 @@ static pmix_status_t setup_local_network(pmix_nspace_t *nptr, } } } - + if (NULL != idkey) { + free(idkey); + } return PMIX_SUCCESS; } diff --git a/opal/mca/pmix/pmix3x/pmix/src/server/pmix_server.c b/opal/mca/pmix/pmix3x/pmix/src/server/pmix_server.c index 8c6cda7b88..f469e7543a 100644 --- a/opal/mca/pmix/pmix3x/pmix/src/server/pmix_server.c +++ b/opal/mca/pmix/pmix3x/pmix/src/server/pmix_server.c @@ -366,9 +366,11 @@ PMIX_EXPORT pmix_status_t PMIx_server_init(pmix_server_module_t *module, /* open the pnet framework and select the active modules for this environment */ if (PMIX_SUCCESS != (rc = pmix_mca_base_framework_open(&pmix_pnet_base_framework, 0))) { + PMIX_RELEASE_THREAD(&pmix_global_lock); return rc; } if (PMIX_SUCCESS != (rc = pmix_pnet_base_select())) { + PMIX_RELEASE_THREAD(&pmix_global_lock); return rc; }