LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* signal handling issue.
@ 2004-05-19  5:45 Alex Davis
  2004-05-19  6:18 ` Ulrich Drepper
  2004-05-19 11:39 ` Richard B. Johnson
  0 siblings, 2 replies; 5+ messages in thread
From: Alex Davis @ 2004-05-19  5:45 UTC (permalink / raw)
  To: linux-kernel

There appears to be a change between linux 2.4 and 2.6
in how signals are handled. As a test, I wrote the program
below:

#include <stdio.h>
#include <signal.h>
#include <setjmp.h>

static jmp_buf env;

static void handler(int s) {
        printf("caught signal %d\n", s);
        longjmp(env, 1);
}

int main() {
        int * p = 0;

        printf("write\n");
        signal(SIGSEGV, handler);
        if ( ! setjmp(env) )
        {
                *p = 0;
        }

        printf("read\n");
        signal(SIGSEGV, handler);
        if ( ! setjmp(env) )
        {
                int a = *p;
        }
        return 0;
}

When run on 2.4.26, the program prints:

write
caught signal 11
read
caught signal 11


Which (I think) is expected, but when run on 2.6.5,
the program prints:

write
caught signal 11
read
Segmentation fault

It's as if the second call to signal is being ignored.
Is this a bug or a feature?

-Alex



=====
I code, therefore I am


	
		
__________________________________
Do you Yahoo!?
SBC Yahoo! - Internet access at a great low price.
http://promo.yahoo.com/sbc/

^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: signal handling issue.
@ 2004-05-19  5:56 Alex Davis
  0 siblings, 0 replies; 5+ messages in thread
From: Alex Davis @ 2004-05-19  5:56 UTC (permalink / raw)
  To: linux-kernel

Some additional info: the 2.6.5 system has gcc 3.3.3,
the 2.4.26 system has gcc 3.3.1. Both systems have
glibc 2.3.2.

-Alex

=====
I code, therefore I am


	
		
__________________________________
Do you Yahoo!?
SBC Yahoo! - Internet access at a great low price.
http://promo.yahoo.com/sbc/

^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: signal handling issue.
@ 2004-05-19  6:56 Alex Davis
  0 siblings, 0 replies; 5+ messages in thread
From: Alex Davis @ 2004-05-19  6:56 UTC (permalink / raw)
  To: linux-kernel

>Use siglonjmp() and sigsetjmp().  You are not allowed to use longjmp()
>to jump from a signal handler.

Is this documented anywhere??

=====
I code, therefore I am


	
		
__________________________________
Do you Yahoo!?
SBC Yahoo! - Internet access at a great low price.
http://promo.yahoo.com/sbc/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-05-19 11:37 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-19  5:45 signal handling issue Alex Davis
2004-05-19  6:18 ` Ulrich Drepper
2004-05-19 11:39 ` Richard B. Johnson
2004-05-19  5:56 Alex Davis
2004-05-19  6:56 Alex Davis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).