https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122262
Bug ID: 122262
Summary: ThreadSanitizer: memory layout is incompatible, even
though ASLR is disabled on riscv64
Product: gcc
Version: 15.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: yuzibode at 126 dot com
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
Target Milestone: ---
The original issue[0] from Debian riscv64. When Debian/sid upgrade to gcc-15
from gcc-14, golang-1.24/1.25 has FBTFS issues like below:
```
--- FAIL: TestShared (0.00s)
cshared_test.go:61: skipping msan_shared test on linux/riscv64; -msan
option is not supported.
--- FAIL: TestShared/tsan_shared (121.78s)
cshared_test.go:112: /usr/bin/setarch riscv64 -R
/tmp/TestSharedtsan_shared3507443847/001/tsan_shared exited with exit status 66
FATAL: ThreadSanitizer: memory layout is incompatible, even though
ASLR is disabled.
Please file a bug.
==63940==Process memory map follows:
0x002aaaaaa000-0x002aaaaab000
/tmp/TestSharedtsan_shared3507443847/001/tsan_shared
0x002aaaaab000-0x002aaaaac000
/tmp/TestSharedtsan_shared3507443847/001/tsan_shared
0x002aaaaac000-0x002aaaaad000
/tmp/TestSharedtsan_shared3507443847/001/tsan_shared
0x003fe6c51000-0x003fe6c66000
0x003fe6c66000-0x003fe6c82000
/usr/lib/riscv64-linux-gnu/libgcc_s.so.1
0x003fe6c82000-0x003fe6c83000
/usr/lib/riscv64-linux-gnu/libgcc_s.so.1
0x003fe6c83000-0x003fe6c84000
/usr/lib/riscv64-linux-gnu/libgcc_s.so.1
0x003fe6c84000-0x003fe6d07000
/usr/lib/riscv64-linux-gnu/libm.so.6
0x003fe6d07000-0x003fe6d08000
/usr/lib/riscv64-linux-gnu/libm.so.6
0x003fe6d08000-0x003fe6d09000
/usr/lib/riscv64-linux-gnu/libm.so.6
0x003fe6d09000-0x003fe6e5e000
/usr/lib/riscv64-linux-gnu/libc.so.6
0x003fe6e5e000-0x003fe6e61000
/usr/lib/riscv64-linux-gnu/libc.so.6
0x003fe6e61000-0x003fe6e63000
/usr/lib/riscv64-linux-gnu/libc.so.6
0x003fe6e63000-0x003fe6e6f000
0x003fe6e6f000-0x003fe6f09000
/tmp/TestSharedtsan_shared3507443847/001/libtsan_shared.so
0x003fe6f09000-0x003fe6f6f000
/tmp/TestSharedtsan_shared3507443847/001/libtsan_shared.so
0x003fe6f6f000-0x003fe6f74000
/tmp/TestSharedtsan_shared3507443847/001/libtsan_shared.so
0x003fe6f74000-0x003fe6f97000
0x003fe6f97000-0x003fe70b9000
/usr/lib/riscv64-linux-gnu/libtsan.so.2.0.0
0x003fe70b9000-0x003fe70be000
/usr/lib/riscv64-linux-gnu/libtsan.so.2.0.0
0x003fe70be000-0x003fe70c6000
/usr/lib/riscv64-linux-gnu/libtsan.so.2.0.0
0x003fe70c6000-0x003ff7fd6000
0x003ff7fd6000-0x003ff7fd9000
0x003ff7fd9000-0x003ff7fdb000 [vvar]
0x003ff7fdb000-0x003ff7fdc000 [vdso]
0x003ff7fdc000-0x003ff7ffc000
/usr/lib/riscv64-linux-gnu/ld-linux-riscv64-lp64d.so.1
0x003ff7ffc000-0x003ff7ffe000
/usr/lib/riscv64-linux-gnu/ld-linux-riscv64-lp64d.so.1
0x003ff7ffe000-0x003ff7fff000
/usr/lib/riscv64-linux-gnu/ld-linux-riscv64-lp64d.so.1
0x003ff7fff000-0x003ff8000000
0x003ffffde000-0x004000000000 [stack]
==63940==End of process memory map.
--- FAIL: TestTSAN (173.01s)
--- FAIL: TestTSAN/tsan (35.03s)
tsan_test.go:95: /usr/bin/setarch riscv64 -R
/tmp/TestTSANtsan1239464039/001/tsan exited with exit status 66
```
We have reported this to golang[1] first before opening the bug.
The reproducible code is here[2].
[0]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1115478
[1]: https://github.com/golang/go/issues/75553
[2]: https://github.com/golang/go/issues/75553#issuecomment-3324102158