OK, having to call fpsetmask(0) is an acceptable workaround.  So if I
do:

#ifdef __freebsd___
        fpsetmask(0);
#endif

Then this should work on all versions of freebsd?

        --david

>>>>> On Tue, 25 Apr 2000 00:05:23 -0700, Brooks Davis <[EMAIL PROTECTED]> 
>said:

  Brooks> On Mon, Apr 24, 2000 at 11:44:59PM -0700, Nate Lawson wrote:
  >> I am running FreeBSD 4.0-RELEASE on x86 with gcc 2.95.2 and the
  >> httperf-0.6 port gives a SIGFPE and dumps core when run against a
  >> system that has no web server running.  (The default behavior is
  >> to measure localhost when no arguments are specified).
  >> 
  >> It seems this is caused by a divide by zero error since the delta
  >> between connections ends up being zero.  The author suggest that
  >> the divide should return a defined value, Inf, according to the
  >> IEEE floating point standard.  FreeBSD generates SIGFPE.  I
  >> temporarily patched the code locally to check for a delta of zero
  >> and arbitrarily set it to 1.0 so that the divide succeeds and
  >> everything comes out ok without crashing.
  >> 
  >> Is FreeBSD's behavior correct?  Why or why not?  You can use the
  >> included code snippet to verify that this occurs.

  Brooks> FreeBSD has traditionaly violated the IEEE FP standard in
  Brooks> this regard.  This is fixed in 5.0 and I think in 4.0-STABLE
  Brooks> (though I can't remember what file this is in so I can't
  Brooks> check.)  If upgrading to -stable isn't an option you can add
  Brooks> a call to fpsetmask(3) in the application as follows (this
  Brooks> will work on Solaris and Irix as well):

  Brooks> #include <ieeefp.h> <...> main() { <declare things>

  Brooks>       fpsetmask(0); <...> }

  Brooks> -- Brooks

  Brooks> -- Any statement of the form "X is the one, true Y" is
  Brooks> FALSE.


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to