Make known Nim allocator race scenarios opt-in

Skip factory-state and allocator by default with explicit skip messages. Preserve both scenarios and enable them with NSL_TEST_RUNTIME_ALLOCATOR=1. Document the deferred runtime issue and remaining validation limits.

Validation: nimble test passes 32 unit tests, 29 regression tests, and 11 sanitizer scenarios, with two skips. Opt-in execution still reports both known allocator failures.
This commit is contained in:
jdb committed 2026-09-29 09:11:59 -05:00
1 parent 46245b3f1e
commit 5a2418f438
3 files changed
+36 -10

No files matched your search

+10
View File
@@ -5,6 +5,16 @@ binary=${1:?Expected the ThreadSanitizer test executable}
writer_binary=${2:?Expected the writer lifecycle test executable}
result=0
for scenario in independent service service-lifetime service-reconfigure custom-state formatter shared-state-lifetime factory-state collector formatter-lifetime timestamp allocator; do
# These scenarios expose Nim 2.2.10's default-allocator race independently
# of logging ownership. Keep them available while the runtime fix is deferred.
case "$scenario" in
factory-state|allocator)
if [[ ${NSL_TEST_RUNTIME_ALLOCATOR:-0} != 1 ]]; then
echo "SKIP: $scenario (known Nim allocator race; set NSL_TEST_RUNTIME_ALLOCATOR=1 to enable)"
continue
fi
;;
esac
echo "ThreadSanitizer scenario: $scenario"
if TSAN_OPTIONS=halt_on_error=1:exitcode=66 timeout 30s "$binary" "$scenario"; then
echo "PASS: $scenario"