Add TSan nightly CI workflow
New .github/workflows/tsan.yml runs the test suite under
ThreadSanitizer on a nightly cron (plus manual and opt-in `tsan`
label on PRs). Runs the default suite alongside a new @tsan-stress
alias, with halt_on_error=0 so a single run surfaces every race
TSan observes. Reports are uploaded as a workflow artifact.
The existing multicore and QCheck-STM tests become scalable via
env vars: IRMIN_STM_ITER, IRMIN_STM_PACK_ITER, IRMIN_MULTICORE_DOMAINS,
IRMIN_MULTICORE_ITER. Defaults match prior behaviour, so normal
`dune runtest` is unchanged.
The @tsan-stress alias (test/irmin-pack/test_tsan_stress/) ships as
an empty dispatcher; per-hotspot scenarios (dict refill, irmin_mem
cache, watch globals, fs pool, append_only_file buffer) land in a
follow-up PR.
This adds detection only; no src/ changes. Expect the first nightly
run to surface several known races from #2397 — that output is the
baseline for follow-up fixes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
efb40c
-
Apr 24 06:48 +00:00