[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)