FAIL: t-printf on Debian sparc64 with gcc-10 patched for gcc bugid 97939

Dennis Clarke dclarke at blastwave.org
Sun Dec 6 08:23:40 UTC 2020


Sadly the situation continues here on Debian sparc64 :

.
.
.
/bin/bash ../../libtool  --tag=CC   --mode=link
/usr/bin/sparc64-linux-gnu-gcc-10  -std=iso9899:1999 -m64 -g -O0
-pedantic -pedantic-errors -fno-builtin -fno-fast-math -mhard-float
-mno-app-regs -mflat -mhard-quad-float -mno-unaligned-doubles
-mno-faster-structs -mcpu=ultrasparc -mtune=ultrasparc -mno-vis
-mno-cbcond -mno-fmaf -mno-fsmuld -mno-popc -mno-subxc -mcmodel=medany
-mmemory-model=tso -no-install  -o t-scanf t-scanf.o
../../tests/libtests.la ../../libgmp.la
libtool: link: /usr/bin/sparc64-linux-gnu-gcc-10 -std=iso9899:1999 -m64
-g -O0 -pedantic -pedantic-errors -fno-builtin -fno-fast-math
-mhard-float -mno-app-regs -mflat -mhard-quad-float
-mno-unaligned-doubles -mno-faster-structs -mcpu=ultrasparc
-mtune=ultrasparc -mno-vis -mno-cbcond -mno-fmaf -mno-fsmuld -mno-popc
-mno-subxc -mcmodel=medany -mmemory-model=tso -o t-scanf t-scanf.o
../../tests/.libs/libtests.a
/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/.libs/libgmp.so
../../.libs/libgmp.so -Wl,-rpath
-Wl,/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/.libs -Wl,-rpath
-Wl,/opt/bw/lib
/usr/bin/sparc64-linux-gnu-gcc-10 -DHAVE_CONFIG_H -I. -I../..  -I../..
-I../../tests -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE
-D_TS_ERRNO -D_XOPEN_SOURCE=600  -std=iso9899:1999 -m64 -g -O0 -pedantic
-pedantic-errors -fno-builtin -fno-fast-math -mhard-float -mno-app-regs
-mflat -mhard-quad-float -mno-unaligned-doubles -mno-faster-structs
-mcpu=ultrasparc -mtune=ultrasparc -mno-vis -mno-cbcond -mno-fmaf
-mno-fsmuld -mno-popc -mno-subxc -mcmodel=medany -mmemory-model=tso -c
-o t-locale.o t-locale.c
/bin/bash ../../libtool  --tag=CC   --mode=link
/usr/bin/sparc64-linux-gnu-gcc-10  -std=iso9899:1999 -m64 -g -O0
-pedantic -pedantic-errors -fno-builtin -fno-fast-math -mhard-float
-mno-app-regs -mflat -mhard-quad-float -mno-unaligned-doubles
-mno-faster-structs -mcpu=ultrasparc -mtune=ultrasparc -mno-vis
-mno-cbcond -mno-fmaf -mno-fsmuld -mno-popc -mno-subxc -mcmodel=medany
-mmemory-model=tso -no-install  -o t-locale t-locale.o
../../tests/libtests.la ../../libgmp.la
libtool: link: /usr/bin/sparc64-linux-gnu-gcc-10 -std=iso9899:1999 -m64
-g -O0 -pedantic -pedantic-errors -fno-builtin -fno-fast-math
-mhard-float -mno-app-regs -mflat -mhard-quad-float
-mno-unaligned-doubles -mno-faster-structs -mcpu=ultrasparc
-mtune=ultrasparc -mno-vis -mno-cbcond -mno-fmaf -mno-fsmuld -mno-popc
-mno-subxc -mcmodel=medany -mmemory-model=tso -o t-locale t-locale.o
../../tests/.libs/libtests.a
/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/.libs/libgmp.so
../../.libs/libgmp.so -Wl,-rpath
-Wl,/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/.libs -Wl,-rpath
-Wl,/opt/bw/lib
make[4]: Leaving directory
'/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/tests/misc'
/usr/bin/make  check-TESTS
make[4]: Entering directory
'/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/tests/misc'
make[5]: Entering directory
'/opt/bw/build/gmp-6.2.1_5.9.0-4-sparc64-smp.001/tests/misc'
../../test-driver: line 107: 51992 Segmentation fault      "$@" >
$log_file 2>&1
FAIL: t-printf
PASS: t-scanf
PASS: t-locale
============================================================================
Testsuite summary for GNU MP 6.2.1
============================================================================
# TOTAL: 3
# PASS:  2
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See tests/misc/test-suite.log

Well that log offers very little :

ceres$ cat  tests/misc/test-suite.log
=============================================
   GNU MP 6.2.1: tests/misc/test-suite.log
=============================================

# TOTAL: 3
# PASS:  2
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: t-printf
==============

FAIL t-printf (exit status: 139)

ceres$

I have been single stepping my way through t-printf and I always end up
inside glibc obstack world and memcpy assembly. I glanced at glibc 2.31
where I see obstack.c line 167 inside :

   143  int
   144  _obstack_begin (struct obstack *h,
   145                  int size, int alignment,
   146                  void *(*chunkfun) (long),
   147                  void (*freefun) (void *))
.
.
.
   167        size = 4096 - extra;

etc etc.

Looks very familiar however we tested that :

   long f(long arg){return 4096 - arg;}

... works just fine with gcc regardless of the new patch.
So that can not be related.

If I just let things proceed I end up at :

Program received signal SIGSEGV, Segmentation fault.
__memcpy_large () at ../sysdeps/sparc/sparc64/memcpy.S:370
370             stb             %g5, [%o0 - 2]                  /* Store
                       */
(gdb)
(gdb) where
#0  __memcpy_large () at ../sysdeps/sparc/sparc64/memcpy.S:370
#1  0x000001000000a9f0 in tests_allocate (size=1099511750592) at
memory.c:102
#2  0x0000010000007620 in check_one (want=0x1000001dfc0 "       123",
fmt=0x100001267a8 "%10Nd") at t-printf.c:312
#3  0x0000010000007af4 in check_z () at t-printf.c:424
#4  0x000001000000a6d0 in main (argc=1, argv=0x7fefffff628) at
t-printf.c:945
(gdb)

This feels like deep water at this point because after glancing around
inside tests/memory.c at both tests_allocate() and tests_free_nosize()
due to :

37:#define obstack_chunk_alloc tests_allocate
38:#define obstack_chunk_free  tests_free_nosize

I just go single stepping around madly for a while and that includes
into the sources of glibc-2.31 and I simply got lost.  Is there an
easier way to track this down?


-- 
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken
GreyBeard and suspenders optional


More information about the gmp-bugs mailing list