--- rpl/src/rpl.c 2011/09/09 12:23:25 1.81 +++ rpl/src/rpl.c 2011/09/10 20:45:06 1.82 @@ -105,6 +105,7 @@ rplinit(int argc, char *argv[], unsigned volatile unsigned char traitement_fichier_temporaire; errno = 0; + pid_processus_pere = getpid(); # ifdef DEBUG_MEMOIRE debug_memoire_initialisation(); @@ -925,12 +926,7 @@ rplinit(int argc, char *argv[], unsigned return(EXIT_FAILURE); } -# ifndef _BROKEN_SIGINFO - action.sa_sigaction = interruption3; -# else - action.sa_handler = interruption3; -# endif - action.sa_flags = SA_NODEFER | SA_ONSTACK | SA_SIGINFO; + signal_test = SIGTEST + 1; erreur = d_absence_erreur; core = d_faux; @@ -1819,6 +1815,13 @@ rplinit(int argc, char *argv[], unsigned if (debug == d_faux) { +# ifndef _BROKEN_SIGINFO + action.sa_sigaction = interruption3; +# else + action.sa_handler = interruption3; +# endif + action.sa_flags = SA_NODEFER | SA_ONSTACK | SA_SIGINFO; + if (sigaction(SIGSEGV, &action, NULL) != 0) { if ((*s_etat_processus).langue == 'F') @@ -2253,6 +2256,7 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).var_volatile_recursivite = 0; (*s_etat_processus).var_volatile_exception_gsl = 0; (*s_etat_processus).arret_depuis_abort = 0; + (*s_etat_processus).signal_a_traiter = d_faux; initialisation_allocateur(s_etat_processus); initialisation_drapeaux(s_etat_processus);