Skip to content

Add ThreadSanitizer CI and explicit sanitizer control#40

Open
edge90 wants to merge 2 commits into
mainfrom
ci/add-tsan-tests
Open

Add ThreadSanitizer CI and explicit sanitizer control#40
edge90 wants to merge 2 commits into
mainfrom
ci/add-tsan-tests

Conversation

@edge90

@edge90 edge90 commented Jan 9, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add TSan build (Clang only, Debug, maintainer mode ON)
  • Add explicit enable_coverage, enable_asan, enable_ubsan, enable_tsan matrix flags
  • Add validation step to catch TSan + ASan/UBSan conflicts (mutually exclusive)
  • Add "test CMake defaults" build (packaging_maintainer_mode=OFF) to verify developer defaults work
  • Standardize ON/OFF casing for CMake boolean flags
  • Skip explicit sanitizer flags when packaging_maintainer_mode=OFF (use CMake defaults)
  • Coverage always respects enable_coverage flag (independent of maintainer_mode)

Test plan

  • Verify TSan build runs and passes
  • Verify "test CMake defaults" build runs with ASan/UBSan/clang-tidy/cppcheck enabled by CMake
  • Verify other Debug builds have coverage + ASan/UBSan
  • Verify validation step would fail if TSan + ASan/UBSan combined

Closes #29

@codecov

codecov Bot commented Jan 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.74%. Comparing base (e6c7729) to head (87f6851).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #40      +/-   ##
==========================================
- Coverage   99.81%   99.74%   -0.07%     
==========================================
  Files          18       18              
  Lines        2129     1992     -137     
  Branches      244      281      +37     
==========================================
- Hits         2125     1987     -138     
  Misses          4        4              
- Partials        0        1       +1     
Flag Coverage Δ
Linux 94.60% <ø> (-0.14%) ⬇️
Windows 100.00% <ø> (ø)
macOS 91.67% <ø> (-3.58%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

- Add TSan build (Clang only, Debug, maintainer mode)
- Add explicit enable_coverage, enable_asan, enable_ubsan, enable_tsan flags
- Add validation step to catch TSan + ASan/UBSan conflicts
- Add "test CMake defaults" build (packaging_maintainer_mode=OFF)
- Standardize ON/OFF casing for CMake boolean flags
- Skip explicit sanitizer flags when packaging_maintainer_mode=OFF (use CMake defaults)
- Coverage always respects enable_coverage flag (independent of maintainer_mode)

Closes #29
@edge90 edge90 force-pushed the ci/add-tsan-tests branch from 479eda6 to 03bf780 Compare January 9, 2026 17:47
- macOS gcc-14: doesn't support ASan/UBSan (linker issues)
- Windows llvm-19.1.1: ASan causes iterator debug level mismatch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ThreadSanitizer (TSan) tests to CI

1 participant