I suggest trying to make the sigset_t static, since that generates
exactly the same code as the "nohang" case, and exactly the same stack
layout as the "hang" case.

(In case this wasn't clear: the sigfillset of a static sigset_t should hang, proving that it's stack layout that comes to the rescue).

The next obvious step would be placing a
watchpoint somewhere.

Yes, but where?

At every word of the sigset (using gdb commands to disable/enable the watchpoints around the sigfillset, you avoid spurious triggers). One of those words will be overwritten if an overrun would have smashed the stack. If it does not fire, s/sigfillset/sigemptyset/ in case it was writing 0xffffffff. If it still does not fire, dunno. :-(

Paolo


Reply via email to