ess/hnp: plug a memory leak in rte_finalize()
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp> (cherry picked from commit open-mpi/ompi@d234caef74)
Этот коммит содержится в:
родитель
d2646cd565
Коммит
959aeab5d9
@ -859,6 +859,52 @@ static int rte_finalize(void)
|
|||||||
if (orte_do_not_launch) {
|
if (orte_do_not_launch) {
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
opal_pointer_array_t * array = orte_node_topologies;
|
||||||
|
int i;
|
||||||
|
if( array->number_free != array->size ) {
|
||||||
|
OPAL_THREAD_LOCK(&array->lock);
|
||||||
|
array->lowest_free = 0;
|
||||||
|
array->number_free = array->size;
|
||||||
|
for(i=0; i<array->size; i++) {
|
||||||
|
if(NULL != array->addr[i]) {
|
||||||
|
orte_topology_t * topo = (orte_topology_t *)array->addr[i];
|
||||||
|
topo->topo = NULL;
|
||||||
|
OBJ_RELEASE(topo);
|
||||||
|
}
|
||||||
|
array->addr[i] = NULL;
|
||||||
|
}
|
||||||
|
OPAL_THREAD_UNLOCK(&array->lock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OBJ_RELEASE(orte_node_topologies);
|
||||||
|
|
||||||
|
{
|
||||||
|
opal_pointer_array_t * array = orte_node_pool;
|
||||||
|
int i;
|
||||||
|
orte_node_t* node = (orte_node_t *)opal_pointer_array_get_item(orte_node_pool, 0);
|
||||||
|
assert(NULL != node);
|
||||||
|
OBJ_RELEASE(node->daemon);
|
||||||
|
node->daemon = NULL;
|
||||||
|
if( array->number_free != array->size ) {
|
||||||
|
OPAL_THREAD_LOCK(&array->lock);
|
||||||
|
array->lowest_free = 0;
|
||||||
|
array->number_free = array->size;
|
||||||
|
for(i=0; i<array->size; i++) {
|
||||||
|
if(NULL != array->addr[i]) {
|
||||||
|
node= (orte_node_t*)array->addr[i];
|
||||||
|
OBJ_RELEASE(node);
|
||||||
|
}
|
||||||
|
array->addr[i] = NULL;
|
||||||
|
}
|
||||||
|
OPAL_THREAD_UNLOCK(&array->lock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OBJ_RELEASE(orte_node_pool);
|
||||||
|
|
||||||
|
free(orte_topo_signature);
|
||||||
|
|
||||||
return ORTE_SUCCESS;
|
return ORTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user