diff --git a/CMakePresets.json b/CMakePresets.json index 19060b1c73..1460b39d06 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -25,10 +25,12 @@ "name": "sanitize", "displayName": "Sanitize build config", "cacheVariables": { - "LEAN_EXTRA_CXX_FLAGS": "-fsanitize=address,undefined", - "LEANC_EXTRA_CC_FLAGS": "-fsanitize=address,undefined -fsanitize-link-c++-runtime", + "LEAN_EXTRA_CXX_FLAGS": "-fsanitize=address,undefined -DLEAN_DEFAULT_THREAD_STACK_SIZE=16*1024*1024", + "LEANC_EXTRA_CC_FLAGS": "-fsanitize=address,undefined", + "LEAN_EXTRA_LINKER_FLAGS": "-fsanitize=address,undefined -fsanitize-link-c++-runtime", "SMALL_ALLOCATOR": "OFF", - "BSYMBOLIC": "OFF" + "BSYMBOLIC": "OFF", + "LEAN_TEST_VARS": "MAIN_STACK_SIZE=16000" }, "generator": "Unix Makefiles", "binaryDir": "${sourceDir}/build/sanitize" diff --git a/src/runtime/io.cpp b/src/runtime/io.cpp index 369e6b9738..b1c7aa7190 100644 --- a/src/runtime/io.cpp +++ b/src/runtime/io.cpp @@ -1465,7 +1465,18 @@ extern "C" LEAN_EXPORT obj_res lean_runtime_mark_persistent(obj_arg a, obj_arg / return io_result_mk_ok(a); } -extern "C" LEAN_EXPORT obj_res lean_runtime_forget(obj_arg /* a */, obj_arg /* w */) { +#if defined(__has_feature) +#if __has_feature(address_sanitizer) +#include +#endif +#endif + +extern "C" LEAN_EXPORT obj_res lean_runtime_forget(obj_arg o, obj_arg /* w */) { +#if defined(__has_feature) +#if __has_feature(address_sanitizer) + __lsan_ignore_object(o); +#endif +#endif return io_result_mk_ok(box(0)); } diff --git a/tests/common.sh b/tests/common.sh index 6340d73c8a..04e5522453 100644 --- a/tests/common.sh +++ b/tests/common.sh @@ -1,6 +1,6 @@ set -euo pipefail -ulimit -s 8192 +ulimit -s ${MAIN_STACK_SIZE:-8192} DIFF=diff if diff --color --help >/dev/null 2>&1; then DIFF="diff --color";