--- rpl/src/gestion_objets.c 2011/09/14 14:34:28 1.66 +++ rpl/src/gestion_objets.c 2011/09/20 14:36:29 1.69 @@ -2801,15 +2801,18 @@ copie_etat_processus(struct_processus *s * n'ont aucune raison de changer. */ + pthread_mutexattr_init(&attributs_mutex); + pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); + # ifndef SEMAPHORES_NOMMES - sem_init(&((*s_nouvel_etat_processus).semaphore_fork), 0, 0); + sem_init(&((*s_nouvel_etat_processus).semaphore_fork), 0, 0); # else - if (((*s_nouvel_etat_processus).semaphore_fork = sem_init2(0, sem_fork)) - == SEM_FAILED) - { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - return(NULL); - } + if (((*s_etat_processus).semaphore_fork = sem_init3(0, getpid(), + pthread_self())) == SEM_FAILED) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return(NULL); + } # endif initialisation_contexte_cas(s_etat_processus); @@ -3939,16 +3942,6 @@ debug_fork() pthread_mutex_lock(&mutex_allocation); pid = fork(); -# ifdef OS2 - if (pid == 0) - { - sem_init(&semaphore_liste_threads, 0, 1); - sem_init(&semaphore_gestionnaires_signaux, 0, 0); - sem_init(&semaphore_gestionnaires_signaux_atomique, 0, 1); - sem_init(&((*s_etat_processus).semaphore_fork), 0, 0); - } -# endif - if (pid == 0) { liberation_queue_signaux(s_etat_processus);