[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
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

Poser une question


pthread_equal et pthread_self ne sont pas dans la liste exhaustive des
fonctions async-signal-safe.
Nicolas George
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