1
1

Fix a SEGV when the user updates the message queue graph after the user

executable has called MPI_Finalize(). It happens when removing the group
from each of the communicators, that MPI_COMM_NULL doesn't have a group. 
Also fix the code from skipping over every other communicator when
freeing the groups.

This commit was SVN r16166.
Этот коммит содержится в:
Pak Lui 2007-09-20 18:58:16 +00:00
родитель 38fde640ad
Коммит 54c87daaed

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

@ -986,16 +986,17 @@ static int rebuild_communicator_list (mqs_process *proc)
*/
commp = &p_info->communicator_list;
commcount = 0;
for (; *commp; commp = &(*commp)->next) {
while (*commp) {
communicator_t *comm = *commp;
if (comm->present) {
comm->present = FALSE;
commcount++;
commp = &(*commp)->next;
} else { /* It needs to be deleted */
*commp = comm->next; /* Remove from the list */
group_decref (comm->group); /* Group is no longer referenced from here */
*commp = comm->next; /* Remove from the list */
if (NULL != comm->group) /* comm group can be NULL for MPI_COMM_NULL */
group_decref (comm->group); /* Group is no longer referenced from here */
mqs_free (comm);
if( *commp == NULL ) break;
}
}