[vox-tech] help with signals and C

Rod Roark vox-tech@lists.lugod.org
Wed, 13 Mar 2002 11:28:58 -0800


Evidently this is a complex topic.  I don't have the answer offhand 
but if you go to google, click Groups, then Advanced Groups Search, 
then search for "SIGFPE" in comp.os.linux.*, you'll find some 
informative discussion.

-- Rod
   http://www.sunsetsystems.com/

On Wednesday 13 March 2002 11:03, Peter Jay Salzman wrote:
> hi mike,
>
> thanks for replying!  i /just/ posted some signal test code before
> getting this email, and it looks like we're getting the same results;
> SIGFPE just isn't being caught.
>
> i can send you my ising 2-D quantum spin code, but that's not so crucial
> because it's pretty obvious when stuff goes bad there.  besides, i can
> re-write the program less efficiently to avoid these kinds of errors.
> basically, i have an average energy per site which gets incremented
> quite a bit
>
>    int spins[N][M];
>
>    loop (i < bignumber) {
>       avgEnergy = do_calculation();
> 	}
> 	avgEnergy /= (N*M*bignumber);
> 	return 0;
>
> and can turn this into:
>
>    int spins[N][M];
>
>    loop (i < bignumber) {
>       avgEnergy += (do_calculation() / (N*M*bignumber);
> 	}
> 	return 0;
>
> for example, to avoid avgEnergy from getting too big (i guess i'd need
> to worry about stuff getting too small?).   i have a quantum simulator
> which isn't nearly so simple.  if you don't mind, i'll just tar that up
> and send it to you.
>
> if you can give me some pointers on how to trap overflows or underflows
> with this code, i'd be very grateful!
>
> thanks!
>
> pete
>
>
> begin msimons@moria.simons-clan.com <msimons@moria.simons-clan.com>
>
> > On Mon, Mar 11, 2002 at 12:43:32PM -0800, Peter Jay Salzman wrote:
> > > can someone post some example code of how to trap a SIGFPE signal
> > > and abort execution during the course of a C program on linux?
> >
> > Pete,
> >
> >   If you can provide a snip of code that invokes a FPE, then I can
> > send you code to trap it.
> >
> >     TTFN,
> >       Mike
> >
> >   I wrote some stuff Monday night but nothing I tried (asside from
> > kill itself) would generate a SIGFPE, I tried all the simple things
> > like a = 1.4 / 0.0;
> >   b = 1e150 / 1e-150;
> >   c = 1e-150 / 1e150;
> >   d = 1e150 * 1e150;
> >   etc...
> >
> > (note that the compiler will warn about all of the above, so
> > I actually stuck things into variables and went through a few
> > steps to do the above... but no SIGFPE)