2010-01-31 8 views
3

Y a-t-il des raisons bien connues pour sigprocmask() de segfault lorsqu'il est utilisé dans une application multithread?sigprocmask() provoquant segfault

J'ai une application qui crée plusieurs threads en utilisant clone(). J'ai déterminé que pour une raison quelconque quand j'utilise sigprocmask il segfaults (pas tout le temps cependant). De la backtrace() il semble aussi que la segfault se produit quand j'utilise sigprocmask() après un siglongjmp().

Des idées?

Répondre

1

Vérifiez les deuxième et troisième arguments. S'ils ne sont pas NULL, assurez-vous qu'ils sont chacun un pointeur valide vers un sigset_t.

Notez que sigprocmask() est seulement officiellement défini pour un processus monothread. Un processus multithread devrait utiliser pthread_sigmask() à la place, qui prend les mêmes arguments bien qu'il renvoie le code d'erreur plutôt que d'utiliser errno.