[all-commits] [llvm/llvm-project] 19bbbc: [sanitizer_common] Change allocator base in test c...
Thurston Dang via All-commits
all-commits at lists.llvm.org
Thu Jun 6 14:49:34 PDT 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 19bbbcbedcbddcfc39202d7d801508a20baf83b6
https://github.com/llvm/llvm-project/commit/19bbbcbedcbddcfc39202d7d801508a20baf83b6
Author: Thurston Dang <thurston at google.com>
Date: 2024-06-06 (Thu, 06 Jun 2024)
Changed paths:
M compiler-rt/lib/sanitizer_common/tests/sanitizer_allocator_test.cpp
Log Message:
-----------
[sanitizer_common] Change allocator base in test case for compatibili… (#93234)
…ty with high-entropy ASLR
With high-entropy ASLR (e.g., 32-bits == 16TB), the allocator base of
0x700000000000 (112TB) may collide with the placement of the libraries
(e.g., on Linux, the mmap base could be 128TB - 16TB == 112TB). This
results in a segfault in the test case.
This patch moves the allocator base below the PIE program segment,
inspired by fb77ca05ffb4f8e666878f2f6718a9fb4d686839. As per that patch:
1) we are leaving the old behavior for Apple 2) since ASLR cannot be set
above 32-bits for x86-64 Linux, we expect this new layout to be durable.
Note that this is only changing a test case, not the behavior of
sanitizers. Sanitizers have their own settings for initializing the
allocator base.
Reproducer:
1. ninja check-sanitizer # Just to build the test binary needed below;
no need to actually run the tests here
2. sudo sysctl vm.mmap_rnd_bits=32 # Increase ASLR entropy
3. for f in `seq 1 10000`; do echo $f;
GTEST_FILTER=*SizeClassAllocator64Dense
./projects/compiler-rt/lib/sanitizer_common/tests/Sanitizer-x86_64-Test
> /tmp/x; if [ $? -ne 0 ]; then cat /tmp/x; fi; done
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list