Red Hat Bugzilla – Bug 43681
glibc v2.2.2 fails some self-tests
Last modified: 2007-04-18 12:33:35 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux 2.4.5 i686; en-US; 0.7) Gecko/20010510
Description of problem:
glibc v2.2.2 fails the following self-tests: test-double, test-ldouble,
test-ildoubl, test-idouble, tst-aio2, tst-aio4.
Steps to Reproduce:
0. In a fresh installation of RedHat Linux v7.1, build glibc v2.2.2:
a. ivh /mnt/cdrom/SRPMS/glibc-184.108.40.206.src.rpm
b. rpm -bc /usr/src/redhat/SPECS/glibc.spec
1. After building completes, run the self tests:
a. cd /usr/src/redhat/BUILD/glibc-2.2.2/build-i386-linux
b. make check
2. After each failure, rerun "make check" to continue the self-testing.
(The tests already run will be skipped.) By the time all the tests have
been run there will have been 6 failures:
~/rt/tst-aio2 - "Timed out: killed the child process"
~/rt/tst-aio4 - "Didn't expect signal from child: got 'File size
Actual Results: Six of the self-tests failed.
Expected Results: All tests should be successful.
0. This behavior is seen on a newly-installed v7.1 system. All the
development tools used in the build are those found on the v7.1
distribution binary RPM CDs.
1. This is on an AMD K6-2-based system. I don't know what architecture
(i386/i486/i586/i686) the RHL v7.1 installer selected when installing the
arch-specific kernel and glibc packages.
2. Building from an unmodified "glibc.spec" causes the compiler switch
"-march=i386" to be used by default. Modifying the spec file to build with
"-march=k6" instead shows no change in the results of the self-testing.
3. No compiler/linker errors (but plenty of warnings) are seen either
while building the glibc binaries or while building the test programs.
4. A request: If it is the tests themselves that are bad (rather than a
given glibc library function and/or compiler code generation), then please
remove the test from the suite. Having false info (test results) is worse
than having no info at all. Thank you.
5. I'm going to give this bug a severity of "Normal" because I don't know
if these test failures really indicate a problem or not. If they represent
actual failure of the tested glibc functionality, then it a Severe problem.
If the problem is just poor tests, then the actual severity is trivial.
I do glibc make check pretty often, and with rare exceptions it succeeds all,
worst case the aio test fail from time to time with the SIGXFSZ signal (need
to investigate it still).
From your report, I understand you're running on some AMD, right?
It is possible the FPU in AMD chips is even more crappy than in Intel chips.
a) try more recent glibc, such as the one from rawhide
b) if the math tests still fail, tell me exactly which tests failed and how
many ulps they were off (just read build-*-linux/math/test-*.out for failed
tests). If they are off by one or two ulps from the expected precision, then
it is well possible it is result of FPU issues and no matter what they are
not serious. If it is off by millions of ulps, then it is certainly a serious
Created attachment 20536 [details]
Error msgs from failed compile of test-stdio
Regarding hardware: I hadn't considered that it might be a hardware problem.
Since you mentioned it, I checked AMD's errata. For my processor (CPU="Mobile
K6-2", Model=8, Stepping=0x0C) no math-related bugs are documented. (There were
a couple of bugs in the handling of the FPU status register in prior steppings.)
Regarding software: running the "make check" self-tests on gcc-2.2.3-10 (from
Rawhide), I got past the double-precision tests without failure. I did get a
new error, though:
Whereas the double-precision self-tests would build OK then give erroneous
output, the "test-stdio" test won't build at all. I am attaching file text
"make-check.out" which shows the errors seen in the build. The problem appears
to be numerous symbol conflicts.
Please let me know if you need any addional info.
The c_stubs failure is not as severe as you might thing (do you use -lc_stubs?).
That's why ignored it so far, the fix is trivial though:
--- c_stubs/gconv_stubs.c.jj Thu Aug 3 15:21:39 2000
+++ c_stubs/gconv_stubs.c Thu Jun 7 07:25:38 2001
@@ -46,6 +46,12 @@ __gconv_NOCONV ()
+const char *
+__gconv_lookup_alias (const char *name)
+ return name;
Regarding the earlier comments:
1. The math problems are reported as max.ulp=n, ulp=n+1. If that's not a cause
for concern, then I'm not concerned.
Regarding those last comments:
1. Do I use -lc_stubs? Beats me. I use whatever the spec file calls for and
RHL v7.1 supports.
2. This "trivial" fix apparently did not make it into glibc-220.127.116.11.src.rpm
because this package requires the same patch.
The tst-aio* failures should be gone since mid June, c_stubs fix is in
since glibc-2.2.3-12, having maximum error 1 ulp more than it is allowed to
by libm-.*ulps isn't something which you should worry about.