Sto tentando di ignorare SIGTRAP. Ho la seguente proof-of-concept code:Perché ignorare SIGTRAP non funziona con ASM?
#include <signal.h>
#include <stdlib.h>
int main(){
signal(SIGTRAP, SIG_IGN);
write(1, "A", 1);
asm("int3");
write(1, "B", 1);
return 0;
}
quando l'eseguo, mi aspetto di vedere "AB", ma vedo
ATrace/breakpoint trap (core dumped)
Perché il mio programma di terminare nonostante ignorando SIGTRAP ?
Per inciso, quando uso un gestore personalizzato (come questo: 'vuoto SIGTRAP (int signum) {} ') allora vedo correttamente" AB ", ma voglio usare SIG_IGN perché è ereditato dalle chiamate execve. – Chris
Un lato interessante: questo codice viene eseguito "correttamente" (output 'AB') su Mac OS X. – duskwuff