lkml.org 
[lkml]   [1996]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: signal(SIGFPE,SIG_IGN) causes endless loop
On Sat, 20 Apr 1996, Linus Torvalds wrote:

> On Sat, 20 Apr 1996, Bryn Paul Arnold Jones wrote:
> >
> > On 19 Apr 1996, Thomas Koenig wrote:
> >
> > > The following program loops endlessly, with repeated SIGFPE's, as
> > > repeated by strace.
> > >
> > > This is an old, old bug, but maybe fixable before 2.0?
> > >
> > > #include <stdio.h>
> > > #include <signal.h>
> > >
> > > int main()
> > > {
> > > int a,b,c;
> > >
> > > signal(SIGFPE,SIG_IGN);
> > > a = 1;
> > > b = 0;
> > > c = a/b;
> > > return 0;
> > > }
> > >
> > Hmm, gdb sais it's restarting on line 11 (c=a/b), after the signal.
> > Perhaps it should ignore the signal, and carry on on the next line ....
> > (you know what I mean).
>
> Can't be done, at least not without doing something overly complex (like
> disassembling the faulting instruction and jumping over it "by hand" in
> the kernel).
>
> The thing that sends SIGFPE might check if SIGFPE is ignored/blocked, and
> just kill the process forcibly if so (same for SIGSEGV etc, I guess).
> That process _deserves_ to die ("My name is Linus Torvalds, prepare to
> die").
>
> Linus
>
Surely even if we're ignoreing the signal, it should allow the program to
carry on as if we haden't reseved the signal, in this case, this happens:

...
set variables
attempt to divide by 0
ignore SIGFIE
attempt to divide by 0
ignore SIGFIE
attempt to divide by 0
ignore SIGFIE
attempt to divide by 0
ignore SIGFIE
attempt to divide by 0
ignore SIGFIE
attempt to divide by 0
ignore SIGFIE
...

Now if dosen't that seem broken to you, or does the signal still have an
effect on us ? ie to me, if I'm ignoring something, I want it to be as
though it never happened.
Bryn
--
PGP key pass phrase forgotten, \ Overload -- core meltdown sequence
again :( | initiated.
/ This space is intentionally left
| blank, apart from this text ;-)
\____________________________________



\
 
 \ /
  Last update: 2005-03-22 13:37    [W:0.049 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site