[NetBSD 5.1] pthread_self() depuis un gestionnaire de signal

Le
JKB
Bonjour à tous,

Une question qui va sembler bizarre Pour une raison trop longue à
expliquer, je fais appel à pthread_equal() dans un gestionnaire de
signal. Ce truc fonctionnait sous NetBSD 4.0 sans aucun problème (et
sous Solaris, Linux, FreeBSD, MacOS X).

Sous NetBSD 5.1, mon programme plante parce que ce test échoue
toujours. En bricolant des exemples minimaux, je viens de
m'apercevoir que pthread_self() ne renvoyait pas la même valeur dans
le processus appelant le gestionnaire de signal et ce gestionnaire
de signal (pour un programme qui n'a qu'un seul thread).


printf("%ld (je sais, ce n'est pas bien)", pthread_self());
raise(signal);


int sh(signal)
{
printf("%ld (je sais, ce n'est pas bien)", pthread_self());
return;
}

me renvoie deux valeurs différentes (et le test pthread_equal() vaut
toujours zéro).

Alors, bug ou pas ?

Merci de vos lumières,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse
=> http://grincheux.de-charybde-en-scylla.fr
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #23742801
JKB , dans le message écrit :
Alors, bug ou pas ?



pthread_equal et pthread_self ne sont pas dans la liste exhaustive des
fonctions async-signal-safe.
JKB
Le #23742871
Le 09 Sep 2011 14:22:19 GMT,
Nicolas George
JKB , dans le message écrit :
Alors, bug ou pas ?



pthread_equal et pthread_self ne sont pas dans la liste exhaustive des
fonctions async-signal-safe.



Certes. Et quand on a besoin de savoir dans quel thread on se trouve ?

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Publicité
Poster une réponse
Anonyme