--- rpl/src/instructions_d5.c 2018/05/30 09:27:34 1.162 +++ rpl/src/instructions_d5.c 2019/02/09 13:36:39 1.167 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.29 - Copyright (C) 1989-2018 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.31 + Copyright (C) 1989-2019 Dr. BERTRAND Joël This file is part of RPL/2. @@ -2243,7 +2243,8 @@ instruction_detach(struct_processus *s_e { if ((*s_etat_processus).var_volatile_alarme != 0) { - envoi_signal_thread((*(*((struct_processus_fils *) + envoi_signal_thread(s_etat_processus, + (*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)).thread) .tid, rpl_sigurg); } @@ -2251,13 +2252,15 @@ instruction_detach(struct_processus *s_e { if ((*s_etat_processus).arret_depuis_abort == -1) { - envoi_signal_thread((*(*((struct_processus_fils *) + envoi_signal_thread(s_etat_processus, + (*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)) .thread).tid, rpl_sigabort); } else { - envoi_signal_thread((*(*((struct_processus_fils *) + envoi_signal_thread(s_etat_processus, + (*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)) .thread).tid, rpl_sigstop); } @@ -2304,7 +2307,7 @@ instruction_detach(struct_processus *s_e .donnee).objet)).thread).nombre_objets_dans_pipe--; action.sa_handler = SIG_IGN; - action.sa_flags = SA_ONSTACK; + action.sa_flags = 0; if (sigaction(SIGPIPE, &action, ®istre) != 0) { @@ -2801,6 +2804,7 @@ instruction_detach(struct_processus *s_e } else { + deverrouillage_threads_concurrents(s_etat_processus); (*s_etat_processus).erreur_systeme = d_es_processus; return; }