[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [sparc] Floating point exception issue
From: |
Mateusz Loskot |
Subject: |
[Qemu-devel] [sparc] Floating point exception issue |
Date: |
Tue, 18 Jan 2011 15:27:04 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101208 Thunderbird/3.1.7 |
Hi,
Recently, I have reported mysterious issues on NetBSD 5.1
emulated on SPARC. The whole first thread is here:
http://lists.gnu.org/archive/html/qemu-devel/2011-01/msg01509.html
I decided to investigate the problem deeper and with great help
from NetBSD folks, I managed to find reproducible test case.
Initially, it was AWK command:
# echo NaN | awk '{print "test"}'
awk: floating point exception 8
source line number 1
and next it boiled down to simple C program (see below).
Details of the investigation are archived in the NetBSD Problem
Report #44389 here:
http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=44389
Here is final version of the test program which reproduces the problem:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <errno.h>
int is_number(const char *s)
{
double r;
char *ep;
errno = 0;
r = strtod(s, &ep);
if (r == HUGE_VAL)
printf("X:%g\n", r);
if (ep == s || r == HUGE_VAL || errno == ERANGE)
return 0;
while (*ep == ' ' || *ep == '\t' || *ep == '\n')
ep++;
if (*ep == '\0')
return 1;
else
return 0;
}
int main(int argc, char **argv)
{
double v;
if (is_number("NaN")) {
printf("is a number\n");
v = atof("NaN");
} else {
printf("not a number\n");
v = 0.0;
}
printf("%.4f\n", v);
return 0;
}
On NetBSD/SPARC, the program receives SIGFPE:
$ gcc ./nan_test_2.c
$ ./a.out
[1] Floating point exception (core dumped) ./a.out
Specifically, it's caused by r == HUGE_VAL condition in
if (ep == s || r == HUGE_VAL || errno == ERANGE)
where r is NaN.
All the signs indicate there is a bug in QEMU.
Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net
Charter Member of OSGeo, http://osgeo.org
Member of ACCU, http://accu.org
- [Qemu-devel] [sparc] Floating point exception issue,
Mateusz Loskot <=
- Re: [Qemu-devel] [sparc] Floating point exception issue, Blue Swirl, 2011/01/18
- Re: [Qemu-devel] [sparc] Floating point exception issue, Mateusz Loskot, 2011/01/18
- Re: [Qemu-devel] [sparc] Floating point exception issue, Blue Swirl, 2011/01/18
- Re: [Qemu-devel] [sparc] Floating point exception issue, Mateusz Loskot, 2011/01/19
- Re: [Qemu-devel] [sparc] Floating point exception issue, Mateusz Loskot, 2011/01/22
- Re: [Qemu-devel] [sparc] Floating point exception issue, Blue Swirl, 2011/01/22
- Re: [Qemu-devel] [sparc] Floating point exception issue, Robert Reif, 2011/01/22
- Re: [Qemu-devel] [sparc] Floating point exception issue, Artyom Tarasenko, 2011/01/22