-
Notifications
You must be signed in to change notification settings - Fork 4
Glibc tests status
With Google DNS (8.8.8.8 in /etc/resolv.conf) I see:
# .../build/posix/bug-ga2
Temporary failure in name resolution
# echo $?
0
With Synopsys DNS (via my laptop 10.42.0.1) test immediately succeeds:
# .../build/posix/bug-ga2
# echo $?
0
Needs 2 Gb of memory for 1 user-space process which we cannot provide on HSDK w/o HIGHMEM/PAE40.
See https://sourceware.org/git/?p=glibc.git;a=blob;f=stdio-common/bug22.c
The last printf after preprocessor looks like that:
fprintf (fp, "%1073741825d %1073741825d", 1, 1);
So we're going to print 2 numbers (that's not really important) of size (INT_MAX / 2) + 2 (=1073741825).
And that's what we get during execution:
mmap2(NULL, 1073750016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap2(NULL, 1073881088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
Obviosly we cannot allocate even 1Gb buffer if we only have 750Mb free:
# free
total used free shared buffers cached
Mem: 772960 24760 748200 13312 0 13664
-/+ buffers/cache: 11096 761864
Swap: 0 0 0
So to make this test executed normally we need to get more memory with either PAE40 or SWAP but...
- PAE40 will need IOC to be disabled and given we extensively use Networking for glibc I will be surprised if we don't see more weird issues here and there, so probably not the best option.
- SWAP we may try but that will slow-down execution quite a lot and for that test there's a timeout value of 60 seconds, see https://sourceware.org/git/?p=glibc.git;a=blob;f=stdio-common/bug22.c#l54
So I'd suggest to keep stdio-common/bug22 as a known FAIL for our current limited platform.
Failing due to missing implementation of getcontext()/setcontext().
Funny enough in 1 test they check for return value from getcontext() and return FAIL_UNSUPPORTED, see https://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/tst-makecontext-align.c#l224:
if (getcontext (&ucp) != 0)
FAIL_UNSUPPORTED ("getcontext");
Thus we're seeing:
UNSUPPORTED: stdlib/tst-setcontext3
So we may either implement getcontext()/setcontext() or add a check as in tst-makecontext-align.c.
BTW that's funny why we mention gettext in sysdeps/unix/sysv/linux/arc/libc.abilist:
GLIBC_2.27 getcontext F
BTW this issue is even seen on test linkage on host machine:
arc-linux-gcc tst-xbzero-opt.c
/tmp/ccHlEIEi.o: In function `main':
tst-xbzero-opt.c:(.text+0x58a): warning: getcontext is not implemented and will always fail
tst-xbzero-opt.c:(.text+0x5ec): warning: makecontext is not implemented and will always fail
/tmp/ccHlEIEi.o: In function `setup_no_clear':
tst-xbzero-opt.c:(.text+0x5c): warning: swapcontext is not implemented and will always fail
Expected to fail, because of missing cpp on target:
.../rpcgen -c .../sunrpc/bug20790.x
/*
* Please do not edit this file.
* It was generated using rpcgen.
*/
#include ".../sunrpc/bug20790.h";
cannot find C preprocessor: cpp
# .../sunrpc/rpcgen: C preprocessor failed with exit code 1</pre>
Require Python3 and target GDB with Python interface on target.
That's the full list of failing tests:
nptl/test-condattr-printersnptl/test-cond-printersnptl/test-mutexattr-printersnptl/test-mutex-printersnptl/test-rwlockattr-printersnptl/test-rwlock-printers
To get them executed need to have Python3 (note not Python2) on target.
But what Python script does it them executes native GDB and tries to do something via GDB's Python interface.
So that's what I had to enable in Buildroot to get this executed:
BR2_PACKAGE_PYTHON3=y
BR2_PACKAGE_PYTHON_PEXPECT=y
BR2_PACKAGE_GDB=y
BR2_PACKAGE_GDB_DEBUGGER=y
Note there's a requirement for Pexpect, without it test-suite's scripts say PExpect 4.0 or newer must be installed to test the pretty printers.
But given native GDB segfaults for anything and everything (see STAR 9001364730 [arc-2018.03 | buildroot] GDB segfaults on any operation") obviously those tests fail due to GDB's crash.
Fail if proxy DNS server returns NOERROR and EAI_NODATA, see https://sourceware.org/ml/libc-alpha/2018-07/msg01029.html.
To work-around that problem use Google DNS server (though it leads to failure of at least posix/bug-ga2)
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Requires execution by non-root, see io/ftwtest-sh:
# We cannot test this as root.
if test `id | sed "s/uid=\([0-9]*\).*/\1/"` = 0; then
exit 0
fi
So it might not be that simple to get that done with existing test execution framework.
Test gets terminated a bit too soon. We need just 2 seconds more (as of today timeout is just 5 seconds, see timezone/tst-tzset.c) to complete the test:
#define TIMEOUT 5
And that's what happens now:
# time .../build/timezone/tst-tzset
Timed out: killed the child process
Command exited with non-zero status 1
real 0m 5.11s
user 0m 3.59s
sys 0m 1.45s
And without timeout we run for 7 seconds total:
# time .../build/timezone/tst-tzset
real 0m 6.95s
user 0m 4.97s
sys 0m 1.99s
# echo $?
0