Bug#502311: testsuite failures in glibc
On Thu, Feb 19, 2009 at 11:38:13AM +0100, Aurelien Jarno wrote:
> Sven Joachim a écrit :
> > On 2009-02-18 18:00 +0100, Aurelien Jarno wrote:
> >
> >> Then maybe some regressions have been added in the latest versions.
> >> Could you retry with a 2.6.26 kernel from lenny/unstable? This version
> >> is working on the buildd and on my machine, so that will infirm/confirm
> >> it is due to the kernel.
> >
> > Would not be very convenient for me, but I may try it sometime later.
> > In the meantime, to isolate problems due to the combination 64-bit
> > kernel/32-bit userland I re-ran the testsuite with "linux32 debian/rules
> > build" and got one error less than originally:
> >
> > ,----
> > | #
> > | # Testsuite failures, someone should be working towards
> > | # fixing these! They are listed here for the purpose of
> > | # regression testing during builds.
> > | # Format: <Failed test>, Error <Make error code> [(ignored)]
> > | #
> > | annexc.out, Error 1 (ignored)
> > | check-localplt.out, Error 1
> > | tst-cancel7.out, Error 1
> > | tst-cancelx4.out, Error 1
> > | tst-cancelx5.out, Error 1
> > | tst-cancelx7.out, Error 1
> > | tst-cleanup0.out, Error 2
> > | tst-cpuclock2.out, Error 1
> > | tst-fmon.out, Error 1
> > | ***************
> > | Encountered regressions that don't match expected failures:
> > | tst-cancel7.out, Error 1
> > | tst-cancelx7.out, Error 1
> > | tst-cleanup0.out, Error 2
> > | tst-cpuclock2.out, Error 1
> > | tst-fmon.out, Error 1
> > `----
> >
> > The tst-cancel*.out files all consist of a single line reading
> >
> > child <pid> still running
>
> When the test is running correctly, the child exit correctly and this
> file is empty.
>
> > The error in tst-cleanup0.out is due to a bashism in the test suite, I'm
> > using dash as /bin/sh. See the excerpt in the attached file
> > tst-cleanup0-bashism. There are probably more bashisms, e.g. in
> > nptl/tst-tls6.sh.
>
Actually all the error but tst-cpuclock2.out are due to the use of dash
as a shell.
I have committed a patch that make sure that bash is used to run the
testsuite. It fixes all the tests, except tst-cancel7.out and
tst-cancelx7.out.
Those two failures are due to the behavior of dash versus bash. The test
tries to test that system() is cancellable. system() invokes /bin/sh
(and this is hard-coded, not changeable via any environment variable).
When doing /bin/bash -c "/bin/echo foo", bash is clever enough to invoke
/bin/echo with execve() without forking. When system() kills the
subprocess, it kills the intended subprocess. But dash forks a further
subprocess and waits, so system() just kills dash, not dash's
subprocess.
I don't know what is the best way (if there is a way) to fix this
problem with dash.
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
Reply to: