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>
