ASan+UBSan workflow lane Pt2 #1728
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1728 +/- ##
==========================================
- Coverage 95.13% 94.90% -0.24%
==========================================
Files 37 37
Lines 8291 8406 +115
==========================================
+ Hits 7888 7978 +90
- Misses 403 428 +25 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
do you want to cache the build when |
|
Local sanitizer timing looks good: core subset runs in ~56 ms (6 tests) and extended subset in ~119 ms (7 tests), so the core/extended split keeps PR checks fast |
|
Sanitizer build (ASan+UBSan) builds the sanitizer binaries (reusing cache/artifacts when available), and Sanitizer (ASan+UBSan) runs the sanitizer test subset against that build. |
elalish
left a comment
There was a problem hiding this comment.
I'll defer to @pca006132 on the details of this one.
|
Adding cache changed the time from around 5 minutes to some 19-20 seconds.
Yes, The extra output is not actually providing enough value as i expected earlier before execution. I’ll remove that diagnostic output, and add any useful guidance into documentation. |
|
@pca006132 @elalish |
elalish
left a comment
There was a problem hiding this comment.
I think the scope is fine for now as long as we're planning to expand it in the next PR.
|
not really required, but I think it will be nice if you can try the build on docker, look at the rpath issue. maybe it can be fixed by cmake args. |
I'll do it, and report you the findings or fixes before implementing |
I checked this in Docker and the issue was the runtime path after the artifact gets downloaded to a different location. The sanitizer build was embedding absolute build-time library paths, so So I changed the build to use |
|
So I think this is good to go? Do you have anything else? |
Its done for this pr, we can make a follow up later if needed. |
Summary
some improvements on #1666
Improvements
Move gtest filter to env var
Use
SANITIZER_GTEST_FILTERin workflow so test-set edits don’t require command-line rewrites.Extract filter to script
Store sanitizer test sets in
scripts/sanitizer_cases.shand source it from workflow for easier tuning.Add explicit sanitizer options
Use stable defaults such as:
ASAN_OPTIONS=detect_container_overflow=0:strict_init_order=1UBSAN_OPTIONS=print_stacktrace=1Add clear failure diagnostics
On failure, print a short local reproduction block directly in job logs.
Add runtime guardrails
Track runtime and keep the lane within budget; make test-set trimming/expansion data-driven.
Split core and extended subsets
Run a small core subset on PRs; keep broader subset for scheduled/manual runs.
Pin compiler/setup consistency
Keep clang setup explicit to reduce drift and cross-runner variability.
(Optional) Separate build/test stages with artifact reuse
Improve retry speed and log clarity by decoupling build from execution.
Why this is needed
The sanitizer lane is now part of routine CI, so the next step is to make it:
Scope