Messages in this thread | | | Date | Mon, 28 Jun 2004 00:16:12 +0200 | From | Andries Brouwer <> | Subject | Re: 2.6.x signal handler bug |
| |
On Sat, Jun 26, 2004 at 09:05:34AM -0700, Davide Libenzi wrote:
> You're receiving a SIGSEGV while SIGSEGV is blocked (force_sig_info). The > force_sig_info call wants to send a signal that the task can't refuse > (kinda The GodFather offers ;). The kernel will noticed this and will > restore the handler to SIG_DFL.
Yes.
So checking whether this is POSIX conforming:
- Blocking a signal in its signal handler is explicitly allowed. (signal(3p)) - It is unspecified what longjmp() does with the signal mask. (longjmp(3p)) - The SIGSEGV that occurs during a stack overflow is of the GodFather kind. (getrlimit(3p)) - If SIGSEGV is generated while blocked, the result is undefined (sigprocmask(3p))
So, maybe the restoring to SIG_DFL was not required, but it doesnt seem incorrect either. It may be a bit surprising.
Andries - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |