Skip to content

ci: test-tsan is a no-op stub — wire a real ThreadSanitizer target (esp. for the lock-free slab) #860

Description

@DeusData

Discovered during the #782 slab-redesign verify (2026-07-04). make test-tsan (Makefile.cbm:622-623) just echoes 'TSan not yet wired…' — CFLAGS_TSAN/GRAMMAR_CFLAGS_TSAN are defined but no TSan object set or runner rule exists → NO working ThreadSanitizer gate in CI.

Now matters: the slab allocator (post-#782/#859) is hand-rolled lock-free (per-page MPSC remote-free queue via CAS + radix page-map + refcount-guard retire) — a data race there is exactly what TSan catches and ASan does not. It was verified MANUALLY (full -fsanitize=thread rebuild; note vendored test objects embed $(SANITIZE), so a plain override leaves ASan .o and the TSan link fails — objects must be rebuilt consistently) and came back clean, but that isn't in automation.

Wire a real test-tsan: TSan object set + runner rule + a CI leg running at least mem/slab_alloc/parallel under TSan (they exercise concurrent cross-thread slab alloc/free at workers=2/4).

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority/normalStandard review queue; useful PR with ordinary maintainer urgency.stability/performanceServer crashes, OOM, hangs, high CPU/memory

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions