Files
hakmem/scripts/run_larson_asan_preload.sh

37 lines
1.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
# Run Larson with AddressSanitizer reliably for 4T by preloading libasan + HAKMEM ASan .so
# Rationale: some environments fail to reserve ASan shadow when running a fully
# sanitized binary for multithread runs. Preloading the ASan runtime and the
# allocator .so while using an unsanitized larson_system binary avoids those
# mapping conflicts while still sanitizing allocator code paths.
threads=${1:-4}
sleep_sec=${2:-10}
min_size=${3:-8}
max_size=${4:-128}
chunks_per_thread=${5:-1024}
rounds=${6:-1}
seed=${7:-12345}
echo "[build] libhakmem_asan.so and larson_system"
make -j asan-shared-alloc larson_system >/dev/null
export LSAN_OPTIONS=${LSAN_OPTIONS:-detect_leaks=0}
# Find libasan from the active toolchain
libasan_path=$(gcc -print-file-name=libasan.so)
if [[ ! -f "$libasan_path" ]]; then
echo "[error] libasan.so not found via gcc -print-file-name" >&2
exit 1
fi
export LD_PRELOAD="${libasan_path}:$PWD/libhakmem_asan.so"
echo "[run] LD_PRELOAD set to: $LD_PRELOAD"
cmd=("./larson_system" "$sleep_sec" "$min_size" "$max_size" "$chunks_per_thread" "$rounds" "$seed" "$threads")
echo "[run] ${cmd[*]}"
"${cmd[@]}"