--- rpl/src/rpl.c 2010/04/28 11:05:45 1.22 +++ rpl/src/rpl.c 2010/05/16 19:36:20 1.24 @@ -447,9 +447,6 @@ rplinit(int argc, char *argv[], unsigned return(EXIT_FAILURE); } - action.sa_sigaction = interruption5; - action.sa_flags = SA_NODEFER | SA_ONSTACK | SA_SIGINFO; - if (sigaction(SIGFABORT, &action, NULL) != 0) { erreur = d_es_signal; @@ -2864,13 +2861,6 @@ rplinit(int argc, char *argv[], unsigned l_element_courant = (void *) (*s_etat_processus).l_base_pile_processus; - if ((*s_etat_processus) - .nombre_interruptions_non_affectees != 0) - { - affectation_interruptions_logicielles( - s_etat_processus); - } - for(i = 0; i < (unsigned long) (*(*((struct_processus_fils *) (*(*((struct_liste_chainee *) @@ -2929,6 +2919,14 @@ rplinit(int argc, char *argv[], unsigned } pthread_mutex_unlock(&((*s_etat_processus).mutex)); + + if ((*s_etat_processus) + .nombre_interruptions_non_affectees != 0) + { + affectation_interruptions_logicielles( + s_etat_processus); + } + nanosleep(&attente, NULL); pthread_mutex_lock(&((*s_etat_processus).mutex)); } @@ -3473,7 +3471,6 @@ rplinit(int argc, char *argv[], unsigned # endif free((*s_etat_processus).localisation); - free(s_etat_processus); # ifndef SEMAPHORES_NOMMES sem_destroy(&semaphore_liste_threads); @@ -3491,8 +3488,11 @@ rplinit(int argc, char *argv[], unsigned sem_gestionnaires_signaux_atomique); # endif + free(s_etat_processus); + # ifdef DEBUG_MEMOIRE - debug_memoire_verification(s_etat_processus); + debug_memoire_verification(); + analyse_post_mortem(); # endif return((erreur == d_absence_erreur) ? EXIT_SUCCESS : EXIT_FAILURE);