[mpich2-commits] r5460 - in mpich2/trunk/src/pm/hydra: include pm/pmiserv utils/bind
balaji at mcs.anl.gov
balaji at mcs.anl.gov
Wed Oct 14 07:03:14 CDT 2009
Author: balaji
Date: 2009-10-14 07:03:14 -0500 (Wed, 14 Oct 2009)
New Revision: 5460
Modified:
mpich2/trunk/src/pm/hydra/include/hydra_utils.h
mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c
mpich2/trunk/src/pm/hydra/utils/bind/bind.c
Log:
Fix more memory leaks.
Modified: mpich2/trunk/src/pm/hydra/include/hydra_utils.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_utils.h 2009-10-14 11:36:03 UTC (rev 5459)
+++ mpich2/trunk/src/pm/hydra/include/hydra_utils.h 2009-10-14 12:03:14 UTC (rev 5460)
@@ -140,6 +140,7 @@
/* bind */
HYD_Status HYDU_bind_init(char *binding, char *bindlib);
+void HYDU_bind_finalize(void);
HYD_Status HYDU_bind_process(int core);
int HYDU_bind_get_core_id(int id);
Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c 2009-10-14 11:36:03 UTC (rev 5459)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmi_proxy_utils.c 2009-10-14 12:03:14 UTC (rev 5460)
@@ -445,6 +445,8 @@
if (HYD_PMCD_pmi_proxy_params.downstream.exit_status)
HYDU_FREE(HYD_PMCD_pmi_proxy_params.downstream.exit_status);
+ HYDU_bind_finalize();
+
/* Reinitialize all params to set everything to "NULL" or
* equivalent. */
status = init_params();
@@ -527,8 +529,8 @@
for (exec = HYD_PMCD_pmi_proxy_params.exec_list; exec; exec = exec->next)
HYD_PMCD_pmi_proxy_params.local.process_count += exec->proc_count;
- HYDU_MALLOC(pmi_ids, int *, HYD_PMCD_pmi_proxy_params.local.process_count * sizeof(int),
- status);
+ HYDU_MALLOC(pmi_ids, int *, HYD_PMCD_pmi_proxy_params.local.process_count *
+ sizeof(int), status);
for (i = 0; i < HYD_PMCD_pmi_proxy_params.local.process_count; i++) {
pmi_ids[i] =
HYDU_local_to_global_id(i, HYD_PMCD_pmi_proxy_params.local.core_count,
@@ -558,7 +560,8 @@
HYDU_ERR_POP(status, "unable to initialize checkpointing\n");
if (HYD_PMCD_pmi_proxy_params.user_global.ckpoint_restart) {
- status = HYDU_env_create(&env, "PMI_PORT", HYD_PMCD_pmi_proxy_params.system_global.pmi_port_str);
+ status = HYDU_env_create(&env, "PMI_PORT",
+ HYD_PMCD_pmi_proxy_params.system_global.pmi_port_str);
HYDU_ERR_POP(status, "unable to create env\n");
/* Restart the proxy. Specify stdin fd only if pmi_id 0 is in this proxy. */
@@ -586,8 +589,10 @@
/* Global inherited env */
if ((exec->env_prop && !strcmp(exec->env_prop, "all")) ||
- (!exec->env_prop && !strcmp(HYD_PMCD_pmi_proxy_params.user_global.global_env.prop, "all"))) {
- for (env = HYD_PMCD_pmi_proxy_params.user_global.global_env.inherited; env; env = env->next) {
+ (!exec->env_prop && !strcmp(HYD_PMCD_pmi_proxy_params.user_global.global_env.prop,
+ "all"))) {
+ for (env = HYD_PMCD_pmi_proxy_params.user_global.global_env.inherited; env;
+ env = env->next) {
status = HYDU_append_env_to_list(*env, &prop_env);
HYDU_ERR_POP(status, "unable to add env to list\n");
}
@@ -599,7 +604,8 @@
if (exec->env_prop)
list = HYDU_strdup(exec->env_prop + strlen("list:"));
else
- list = HYDU_strdup(HYD_PMCD_pmi_proxy_params.user_global.global_env.prop + strlen("list:"));
+ list = HYDU_strdup(HYD_PMCD_pmi_proxy_params.user_global.global_env.prop +
+ strlen("list:"));
envstr = strtok(list, ",");
while (envstr) {
@@ -613,7 +619,8 @@
}
/* Next priority order is the global user env */
- for (env = HYD_PMCD_pmi_proxy_params.user_global.global_env.user; env; env = env->next) {
+ for (env = HYD_PMCD_pmi_proxy_params.user_global.global_env.user; env;
+ env = env->next) {
status = HYDU_append_env_to_list(*env, &prop_env);
HYDU_ERR_POP(status, "unable to add env to list\n");
}
@@ -625,7 +632,8 @@
}
/* Highest priority is the system env */
- for (env = HYD_PMCD_pmi_proxy_params.user_global.global_env.system; env; env = env->next) {
+ for (env = HYD_PMCD_pmi_proxy_params.user_global.global_env.system; env;
+ env = env->next) {
status = HYDU_append_env_to_list(*env, &prop_env);
HYDU_ERR_POP(status, "unable to add env to list\n");
}
@@ -700,7 +708,7 @@
prop_env = NULL;
}
-fn_spawn_complete:
+ fn_spawn_complete:
/* Everything is spawned, register the required FDs */
status = HYD_DMX_register_fd(HYD_PMCD_pmi_proxy_params.local.process_count,
HYD_PMCD_pmi_proxy_params.downstream.out,
@@ -716,6 +724,8 @@
HYD_PMCD_pmi_proxy_params.local.procs_are_launched = 1;
fn_exit:
+ if (pmi_ids)
+ HYDU_FREE(pmi_ids);
HYDU_FUNC_EXIT();
return status;
Modified: mpich2/trunk/src/pm/hydra/utils/bind/bind.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/bind/bind.c 2009-10-14 11:36:03 UTC (rev 5459)
+++ mpich2/trunk/src/pm/hydra/utils/bind/bind.c 2009-10-14 12:03:14 UTC (rev 5460)
@@ -132,6 +132,18 @@
goto fn_exit;
}
+void HYDU_bind_finalize(void)
+{
+ if (HYDU_bind_info.bindmap)
+ HYDU_FREE(HYDU_bind_info.bindmap);
+
+ if (HYDU_bind_info.bindlib)
+ HYDU_FREE(HYDU_bind_info.bindlib);
+
+ if (HYDU_bind_info.topology)
+ HYDU_FREE(HYDU_bind_info.topology);
+}
+
HYD_Status HYDU_bind_process(int core)
{
HYD_Status status = HYD_SUCCESS;
More information about the mpich2-commits
mailing list