1
1

Fix a segv when an application isn't found - ensure we properly terminate.

This commit was SVN r20395.
Этот коммит содержится в:
Ralph Castain 2009-02-02 13:44:08 +00:00
родитель c3261e1a05
Коммит d207c17adf

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

@ -1023,13 +1023,9 @@ int orte_odls_base_default_launch_local(orte_jobid_t job,
item != opal_list_get_end(&orte_local_children);
item = opal_list_get_next(item)) {
child = (orte_odls_child_t*)item;
if (OPAL_EQUAL == opal_dss.compare(&job, &(child->name->jobid), ORTE_JOBID)) {
if (i == child->app_idx) {
child->exit_code = rc;
} else {
child->state = ORTE_PROC_STATE_UNDEF;
child->exit_code = 0;
}
if (OPAL_EQUAL == opal_dss.compare(&job, &(child->name->jobid), ORTE_JOBID) &&
i == child->app_idx) {
child->exit_code = rc;
}
}
/* okay, now tell the HNP we couldn't do it */
@ -1096,7 +1092,17 @@ int orte_odls_base_default_launch_local(orte_jobid_t job,
if (NULL != mpiexec_pathenv) {
opal_argv_free(argvptr);
}
child->exit_code = rc;
/* cycle through children to find those for this jobid */
for (item = opal_list_get_first(&orte_local_children);
item != opal_list_get_end(&orte_local_children);
item = opal_list_get_next(item)) {
child = (orte_odls_child_t*)item;
if (OPAL_EQUAL == opal_dss.compare(&job, &(child->name->jobid), ORTE_JOBID) &&
i == child->app_idx) {
child->exit_code = rc;
}
}
/* okay, now tell the HNP we couldn't do it */
goto CLEANUP;
}
if (NULL != mpiexec_pathenv) {