Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Eric Sosman <esosman@ieee-dot-org.invalid> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: signal() anomaly |
| Date | 2012-08-01 16:33 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <jvc3r2$eek$1@dont-email.me> (permalink) |
| References | <jv9e9e$bj3$1@speranza.aioe.org> <jv9l8p$1u2$1@blue-new.rahul.net> <jvbu80$pu5$1@speranza.aioe.org> |
On 8/1/2012 2:58 PM, hip cat wrote:
> On Tue, 31 Jul 2012 22:12:41 +0000, Edward A. Falk wrote:
>> In article <jv9e9e$bj3$1@speranza.aioe.org>, hip cat
>> <nospam@nospam.com> wrote:
>>> What up
>>>
>>> I've used signal to set SIGSEGV to SIG_IGN. But when I later dereference
>>> a null pointer my program still crashes out with segfault SIGSEGV. What
>>> gives?
>>
>> I am amused and curious -- what did you *want* to happen on a null
>> pointer dereference?
>
> Word Ed,
>
> My code has a certain pointer that sometimes unexpectedly becomes null.
> It would be a lot of work to find every place the pointer gets
> dereferenced and add a null check. So I want to just ignore it by
> catching the signal.
That's not going to work. As I wrote earlier, the C Standard
doesn't seem entirely clear on this matter, but the fact that you
get undefined behavior if a SIGSEGV handler returns suggests that
there's no way to recover. That's explicit under POSIX: If you
ignore SIGSEGV, there's no telling what might happen.
But, back to your problem: What do you *expect* should happen
if you could somehow continue after dereferencing your null pointer?
Somewhere, your program did `*ptr = 42' and ptr was null: Where do
expect the 42 to go? Or somewhere you did `x = *ptr' and ptr was
null: What value should x now have? Or, here's a good one:
for (ptr = accidentally_null; *ptr != 0; ++ptr) {
putchar(*ptr);
}
How many times should the loop execute, what output should it
produce, and what value should ptr have when (if) it finishes?
SIGSEGV means your car's motor has thrown a rod. You can't
just ignore the broken engine and keep on driving.
--
Eric Sosman
esosman@ieee-dot-org.invalid
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
signal() anomaly hip cat <nospam@nospam.com> - 2012-07-31 20:13 +0000
Re: signal() anomaly Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-07-31 16:35 -0400
Re: signal() anomaly hip cat <nospam@nospam.com> - 2012-08-01 18:59 +0000
Re: signal() anomaly Nick Bowler <nbowler@draconx.ca> - 2012-08-01 20:14 +0000
Re: signal() anomaly falk@rahul.net (Edward A. Falk) - 2012-07-31 22:12 +0000
Re: signal() anomaly hip cat <nospam@nospam.com> - 2012-08-01 18:58 +0000
Re: signal() anomaly James Kuyper <jameskuyper@verizon.net> - 2012-08-01 15:33 -0400
Re: signal() anomaly hip cat <nospam@nospam.com> - 2012-08-01 20:47 +0000
Re: signal() anomaly Paul <nospam@needed.com> - 2012-08-01 17:34 -0400
Re: signal() anomaly Johann Klammer <klammerj@NOSPAM.a1.net> - 2012-08-02 06:34 +0200
Re: signal() anomaly Paul <nospam@needed.com> - 2012-08-02 07:10 -0400
Re: signal() anomaly Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-01 18:07 -0400
Re: signal() anomaly Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-08-02 00:15 +0100
Re: signal() anomaly Nick Bowler <nbowler@draconx.ca> - 2012-08-02 00:05 +0000
Re: signal() anomaly Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-08-02 02:47 +0100
Re: signal() anomaly James Kuyper <jameskuyper@verizon.net> - 2012-08-01 18:13 -0400
Re: signal() anomaly James Kuyper <jameskuyper@verizon.net> - 2012-08-01 18:14 -0400
Re: signal() anomaly Nobody <nobody@nowhere.com> - 2012-08-02 12:52 +0100
Re: signal() anomaly Angel <angel+news@spamcop.net> - 2012-08-01 19:41 +0000
Re: signal() anomaly Kenneth Brody <kenbrody@spamcop.net> - 2012-08-01 16:16 -0400
Re: signal() anomaly Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-01 16:33 -0400
Re: signal() anomaly Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-08-02 00:22 +0100
Re: signal() anomaly Stephen Sprunk <stephen@sprunk.org> - 2012-08-02 00:55 -0500
Re: signal() anomaly Ike Naar <ike@sverige.freeshell.org> - 2012-08-02 07:01 +0000
Re: signal() anomaly Öö Tiib <ootiib@hot.ee> - 2012-09-08 20:53 -0700
Re: signal() anomaly Nobody <nobody@nowhere.com> - 2012-08-01 18:06 +0100
Re: signal() anomaly Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 13:44 -0700
Re: signal() anomaly Kleuske <kleuske@nowhere.net> - 2012-08-02 20:52 +0000
csiph-web