Messages in this thread | | | Subject | sigaction SA_SIGINFO functionality | From | Josip Gracin <> | Date | 18 Dec 1998 16:36:03 +0100 |
| |
Hi!
I can't get sigaction to work with SA_SIGINFO type of handler. I can see that this is already in the kernel but does it work?
This is the program that doesn't work:
#include <stdio.h> #include <asm/signal.h> /* ???! */ #include <setjmp.h>
jmp_buf main_loop;
void sigsegv_handler (int arg, struct siginfo *si, void *parg) { printf ("Signal SEGV! si = 0x%p\n", si); longjmp (main_loop, 1); }
int main () { char *f = NULL; int retval; struct sigaction sa;
sigaction (SIGSEGV, NULL, &sa); sa.sa_sigaction = sigsegv_handler; sa.sa_flags = SA_SIGINFO; sigemptyset (&sa.sa_mask); retval = sigaction (SIGSEGV, &sa, NULL); if (retval < 0) exit (10); printf ("Entering the loop\n");
if (setjmp (main_loop)) printf ("Back at main_loop\n"); else *f = 0; return 0; }
This results in the following output: Signal SEGV! si = 0x(nil) Back at main_loop Signal SEGV! si = 0x(nil) Back at main_loop [...]
So, the si parameter (as well as parg) is NULL. The kernel didn't realize that I have a siginfo type of handler, did it?
Is it something with the program or the kernel?
Thanks in advance, -- | Josip Gracin | Zagreb, Croatia | mailto:grac@fly.cc.fer.hr, http://fly.cc.fer.hr/~grac
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |