#286: Change detect_leaks=0 to detect_leaks=1 in asan-test target. LSAN suppressions for CPython intentional leaks (interned strings, type objects, small int cache, etc.) were already in sanitizers/asan.supp. Now that #266 and #275 are fixed, real McRogueFace leaks will be caught. #284: Add make massif-test target that runs stress_test_suite.py under Valgrind Massif for heap profiling. Output goes to build-debug/massif.out, viewable with ms_print. Closes #286, closes #284 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 lines
1 KiB
Text
33 lines
1 KiB
Text
# McRogueFace AddressSanitizer Suppression File
|
|
#
|
|
# CPython false positives are handled by:
|
|
# - PYTHONMALLOC=malloc (bypasses pymalloc)
|
|
# - LSAN suppressions below (CPython has intentional lifetime leaks)
|
|
#
|
|
# Usage (via ASAN_OPTIONS or LSAN_OPTIONS):
|
|
# LSAN_OPTIONS="suppressions=sanitizers/asan.supp"
|
|
#
|
|
# Format: one suppression per line, prefix with "leak:" for leak suppressions
|
|
# See https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer
|
|
|
|
# CPython interned strings — intentionally never freed
|
|
leak:_PyUnicode_InternInPlace
|
|
leak:PyUnicode_InternFromString
|
|
|
|
# CPython type objects — intentionally immortal
|
|
leak:PyType_Ready
|
|
leak:_PyType_Ready
|
|
|
|
# CPython small int cache ([-5, 256]) — allocated once, never freed
|
|
leak:_PyLong_Init
|
|
|
|
# CPython GIL — allocated once per interpreter
|
|
leak:PyThread_allocate_lock
|
|
|
|
# CPython import system caches
|
|
leak:PyImport_ImportModule
|
|
leak:_PyImport_FindExtensionObject
|
|
|
|
# dlopen — loaded shared libraries are intentionally kept resident
|
|
leak:dlopen
|
|
leak:_dl_open
|