https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107940
Bug ID: 107940
Summary: temp_directory_path testcase broken
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: laurent.alfonsi at linaro dot org
Target Milestone: ---
Testcase of gnu testsuite
libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
sometimes crashes and leaves a directory with broken user/permissions. i.e :
$ ls -lrt
builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-gcc.git~master-stage2/aarch64-linux-gnu/libstdc++-v3/testsuite/normal14/filesystem-test.temp_directory_path.193969877.WdDDBh/
ls: cannot access
'builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-gcc.git~master-stage2/aarch64-linux-gnu/libstdc++-v3/testsuite/normal14/filesystem-test.temp_directory_path.193969877.WdDDBh/tmp':
Permission denied
total 0
d????????? ? ? ? ? ? tmp
It is probably useless but here are the cmd launched by dejagnu to build this
test :
ABE=$PWD
$PWD/builds/destdir/x86_64-pc-linux-gnu/bin/aarch64-linux-gnu-g++ \
-B$ABE/builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-$GCCVER-stage2/./gcc \
-nostdinc++ \
-L$ABE/builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-$GCCVER-stage2/aarch64-linux-gnu/libstdc++-v3/src
\
-L$ABE/builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-$GCCVER-stage2/aarch64-linux-gnu/libstdc++-v3/src/.libs
\
-L$ABE/builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-$GCCVER-stage2/aarch64-linux-gnu/libstdc++-v3/libsupc++/.libs
\
-B$ABE/builds/destdir/x86_64-pc-linux-gnu/aarch64-linux-gnu/bin/ \
-B$ABE/builds/destdir/x86_64-pc-linux-gnu/aarch64-linux-gnu/lib/ \
-isystem $ABE/builds/destdir/x86_64-pc-linux-gnu/aarch64-linux-gnu/include
\
-isystem
$ABE/builds/destdir/x86_64-pc-linux-gnu/aarch64-linux-gnu/sys-include \
-B$ABE/builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-$GCCVER-stage2/aarch64-linux-gnu/./libstdc++-v3/src/.libs
\
-O1 \
-D_GNU_SOURCE \
-DLOCALEDIR="." \
-nostdinc++ \
-I$ABE/builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-$GCCVER-stage2/aarch64-linux-gnu/libstdc++-v3/include/aarch64-linux-gnu
\
-I$ABE/builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-$GCCVER-stage2/aarch64-linux-gnu/libstdc++-v3/include
\
-I$ABE/snapshots/$GCCVER/libstdc++-v3/libsupc++ \
-I$ABE/snapshots/$GCCVER/libstdc++-v3/include/backward \
-I$ABE/snapshots/$GCCVER/libstdc++-v3/testsuite/util \
$ABE/snapshots/gcc~master/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
\
-DUSE_FILESYSTEM_TS \
-lstdc++fs \
-Wl,--gc-sections \
-L$ABE/builds/x86_64-pc-linux-gnu/aarch64-linux-gnu/gcc-$GCCVER-stage2/aarch64-linux-gnu/libstdc++-v3/src/filesystem/.libs
\
-lm -g -static \
-o ./temp_directory_path.exe
The test sometimes crashes while running temp_directory_path.exe
- crashes with O2, ok with O1.
- crashes when using qemu-aarch64 v7.2.0-rc0-24-g98f10f0e26, ok with qemu
v7.2.0-rc2-19-gac14949821
- on native aa64, and it seems to work.
- But valgrind reports many uninitialized values, ...
Which explain this instability to pass/fail.
sanitizer=address reports an issue while stack unwinding :
==13419==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000
(pc 0x0055012adf14 bp 0x0055007ff090 sp 0x0055007ff090 T0)
==13419==The signal is caused by a UNKNOWN memory access.
==13419==Hint: address points to the zero page.
#0 0x55012adf14 in aarch64_fallback_frame_state md-unwind-support.h:74
#1 0x55012adf14 in uw_frame_state_for
/home/tcwg-buildslave/workspace/tcwg_gnu_1/abe/snapshots/gcc.git~master/libgcc/unwind-dw2.c:1275
#2 0x55012af2f8 in _Unwind_RaiseException
/home/tcwg-buildslave/workspace/tcwg_gnu_1/abe/snapshots/gcc.git~master/libgcc/unwind.inc:104
#3 0x550106e5c0 in __cxa_throw
/home/tcwg-buildslave/workspace/tcwg_gnu_1/abe/snapshots/gcc.git~master/libstdc++-v3/libsupc++/eh_throw.cc:93
#4 0x4141c4 in
std::experimental::filesystem::v1::temp_directory_path[abi:cxx11]()
/home/laurent.alfonsi/abe/snapshots/gcc.git~master/libstdc++-v3/src/filesystem/ops.cc:1337
#5 0x40deb8 in test03()
/home/laurent.alfonsi/abe/snapshots/gcc~master/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc:121
#6 0x4034cc in main
/home/laurent.alfonsi/abe/snapshots/gcc~master/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc:162
#7 0x550130b2e8 in __libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:58
#8 0x550130b3b8 in __libc_start_main_impl ../csu/libc-start.c:381
#9 0x403aec in _start
(/home/laurent.alfonsi/abe/temp_directory_path.exe+0x403aec) (BuildId:
be39c337f0ff0a3afba1bb02d7ff75402eb15fb4)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV md-unwind-support.h:74 in
aarch64_fallback_frame_state
==13419==ABORTING
This may be linked to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90787.
But, I confirm my toolchain is based on trunk (13.0), and contains the 90787
fix.