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.
Thanks,
Nate
---------- Forwarded message ----------
Date: Mon, 24 Apr 2000 15:54:38 -0700 (PDT)
From: David Mosberger <[EMAIL PROTECTED]>
To: Nate Lawson <[EMAIL PROTECTED]>
Subject: Re: patch to httperf-0.6
>>>>> On Mon, 24 Apr 2000 15:37:21 -0700 (PDT), Nate Lawson <[EMAIL PROTECTED]> said:
Nate> On x86. Your code generates SIGFPE, not SIGBUS sorry. Here
Nate> is a code snippet which generates SIGFPE as well.
Nate> main() { float a, b, c;
Nate> a = 1.0; b = 0.0; c = a/b; }
Nate> This seems to be correct behavior.
No, IEEE says that the exceptions should be disabled by default. You
should get Inf instead of SIGFPE.
--david
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message