Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 May 2000 18:30:26 -0700 (PDT)
From:      Nate Lawson <nate@elite.net>
To:        Martin Cracauer <cracauer@cons.org>
Cc:        freebsd-hackers@FreeBSD.ORG, freebsd-ports@FreeBSD.ORG, davidm@hpl.hp.com
Subject:   Re: floating point exceptions
Message-ID:  <Pine.BSD.3.91.1000505182535.9032C-100000@almond.elite.net>
In-Reply-To: <20000505233552.A47008@cons.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 5 May 2000, Martin Cracauer wrote:
> In <Pine.BSD.3.91.1000424233753.13392A-100000@almond.elite.net>, 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.
> 
> FreeBSD up to 3.x defaults to have exceptions unmasked.
> 
> This was changed before 4.0 and should be in 4.x/4-STABLE and in
> 5-current. 
> 
> Are you sure you get this on a real 4.0 system, not one from a few
> weeks before release?  If so, what is the version of
> /usr/include/machine/npx.h?  It should be 1.18.  Of course, the kernel
> should be complied with it in case this is a source-updated system.
> 
> Anyway, the solution is fpsetmask, as others noted.
> 
> Also note that FreeBSD/gcc/ANSI C 89 have a few other problems with
> IEEE 754 compatibility so that we can't claim conformity in any case.
> 
> Please check the mail archives on www.freebsd.org, this has been
> discussed every 7 months for the last 5 years now.

Thanks for the information.  I checked the system again and it is indeed 
4.0-20000127-CURRENT (ie. just before 4.0-RELEASE).  I will upgrade.

David, is it possible to add the following to the httperf port?

  #ifdef __FreeBSD__
      fpsetmask(~FP_X_DZ);
  #endif 

Thanks,
Nate


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSD.3.91.1000505182535.9032C-100000>