la définition d'un point d'arrêt de sortie gdb ne fonctionne pas?

J'ai mis des points d'arrêt à la sortie et _exit et mon programme (multithread application, en cours d'exécution sur linux 2.6.16.46-0.12 sles10), est en quelque sorte toujours en cours de fermeture d'une façon que je ne peut pas localiser

(gdb) c 
... 
[Nouveau Thread 47513671297344 (LWP 15279)] 
[Nouveau Thread 47513667103040 (LWP 15280)] 
[Nouveau Thread 47513662908736 (LWP 15281)] 

Programme terminé avec le code 0177. 
(gdb) 

la sortie des fonctions de résider dans la libc donc il n'y a pas de différé charge partagée de la bibliothèque de questions. Quelqu'un sait de certains autres mystérieux de déclenchement de sortie, qui ne peuvent pas être pris?

EDIT: le problème est maintenant seulement académiques. J'ai essayé binaire de recherche, de débogage, de la sauvegarde d'un sous-ensemble de mes modifications (le problème a disparu). Après j'ai appliqué de nouveau dans l'ordre, je n'arrive plus à reproduire le problème, même avec des choses restauré à son état d'origine.

EDIT2: j'ai trouvé une raison de ce genre d'erreur à récemment, ce qui peut avoir été la source d'origine de ce problème. Pour des raisons historiques, notre produit utilise le mal de l'éditeur de liens drapeau -Bsymbolic. Parmi les effets secondaires de cette est que, quand un symbole est pas défini, mais appelé, la GLIBC runtime éditeur de liens bombe exactement de cette manière, et vous le voyez dans le débogueur comme un processus sorti avec 0177. Lorsque le moteur d'exécution de l'éditeur de liens abandonne cette façon, je suppose qu'il fait le syscall à _exit directement (plutôt que d'utiliser la bibliothèque d'exécution C exit() ou _exit()). Ce serait cohérent avec le fait que j'ai été incapable de rattraper cela avec la sortie des points d'arrêt dans le débogueur.

source d'informationauteur Peeter Joot