Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Jun 1997 17:28:42 -0700 (PDT)
From:      ajhar@noao.edu
To:        freebsd-gnats-submit@FreeBSD.ORG
Subject:   i386/3895: False FPE (floating point exception) signaled
Message-ID:  <199706180028.RAA18025@hub.freebsd.org>
Resent-Message-ID: <199706180030.RAA18089@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         3895
>Category:       i386
>Synopsis:       False FPE (floating point exception) signaled
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jun 17 17:30:00 PDT 1997
>Last-Modified:
>Originator:     Edward Ajhar
>Organization:
National Optical Astronomy Observatories
>Release:        2.2-STABLE (1997 May 29)
>Environment:
FreeBSD husa.tuc.noao.edu 2.2-STABLE FreeBSD 2.2-STABLE #0: Wed May 28 13:13:59 MST 1997     ajhar@husa.tuc.noao.edu:/usr/src/sys/compile/HUSA  i386

>Description:
This line causes a false SIGFPE in Fortran code:

     IXY(1) = X + 0.5

where x = 14.  X is a real.

This line of code is executed many, many times before it finally decides
to SIGFPE.

This FPE is signaled with either the optimizer off (on all code) or
on.  The error occurs in exactly the same place in the same way with
f2c (which uses the native FreeBSD gcc-2.7.2.1 compiler) and with
g77-0.5.20 and gcc-2.7.2.2, which I compiled and used separately.
The error occurs with or without gdb.  Everything appears normal before
the SIGFPE.

The same code works when compiled with g77-0.5.20/gcc-2.7.2.2 on an
UltraSparc running Solaris 2.5, which leads me to believe that either there
is a problem with the i386 implementation of gcc-2.7.2 or that there
is something wrong with its implementation on FreeBSD 2.2.

Another false SIGFPE occurs in completely different Fortran code:

           L = UPPER(KEY)

where L is an integer, upper is an integer function, and key is a character.
UPPER returns with the value 88.

The function is successfully called many, many times before it finally decides
to SIGFPE.  The final call is also successful.  The SIGFPE only occurs after
the return of UPPER, when L is to be assigned the value.

This FPE is signaled with either the optimizer off (on all code) or
on.  The error occurs in exactly the same place in the same way with
f2c and with g77-0.5.20/gcc-2.7.2.2.  The error occurs with or without gdb.
Everything appears normal before the SIGFPE.

>How-To-Repeat:
Compile and run my code.  It fails every time.  If I can truly
isolate the problem in a simple program, I will definitely send it along.

See also Problem Report misc/3700, dated Tue May 27 21:20:01 PDT 1997,
from Tim.Brown@ctg.com for a similar problem.

>Fix:

>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706180028.RAA18025>