[NetBSD 5.1] pthread_self() depuis un gestionnaire de signal
2 réponses
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)\n", pthread_self());
raise(signal);
...
int sh(signal)
{
printf("%ld (je sais, ce n'est pas bien)\n", 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