chore: Upgrade Clang sanitizer to clang-22 and switch gcc-15 sanitizer to Release - #7079
Conversation
| "gcc-15", | ||
| "clang-20", |
There was a problem hiding this comment.
What's the benefit of keeping GCC-15 and Clang-20 on Bookworm with ASAN and UBSAN (GCC only) and then separately running UBSAN on Clang-22 vs. just changing Bookworm to Trixie and Clang-20 to Clang-22 here?
There was a problem hiding this comment.
if we do not care much about building with clang-20 or clang-21 (and I think that, as long as we build with clang-22, that's fair) then we could do that, i.e. switch debian-bookworm:clang-20 to debian-trixie:clang-22 for both ASAN and UBSAN. However the UBSAN implementation on GCC and Clang is sufficiently different to run these sanitizers with both compilers. Having said that, it would also make sense to switch gcc-15 from Debug build to Release and run these two sanitizers with GCC on Release build, so that the sanitizer works on optimized code (with instrumentation). Would that be ok with you ?
We might also enable MemorySanitizer on Clang (not available on GCC) but that's presumably a different PR. EDIT: MemorySanitizer requires libc++ on Linux and that's definitely out of scope here.
There was a problem hiding this comment.
That would be generally fine with me, although we are hitting the limits of the runners with the number of currently triggered runs - typically they are OOMing. We can of course reduce the number of concurrently running jobs...
There was a problem hiding this comment.
Right, but that won't increase the number of build/test jobs. Replacing clang-20 with clang-22 and switching the existing gcc-15 from Debug to Release.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #7079 +/- ##
=========================================
- Coverage 82.1% 82.1% -0.0%
=========================================
Files 1010 1010
Lines 76023 76023
Branches 7372 7366 -6
=========================================
- Hits 62409 62403 -6
- Misses 13614 13620 +6 🚀 New features to boost your workflow:
|
clang-22 and switch ASAN/UBSAN on gcc-15 to Release
clang-22 and switch ASAN/UBSAN on gcc-15 to Releaseclang-22 and switch gcc-15 sanitizer to Release
c96a3ff to
d6eb9e5
Compare
| f"{os['compiler_name']}-{os['compiler_version']}" | ||
| in ["clang-20", "clang-21"] | ||
| os["compiler_name"] == "clang" | ||
| and os["compiler_version"].isdigit() |
There was a problem hiding this comment.
This one is probably not needed
There was a problem hiding this comment.
We get any for os["compiler_version"] on rhel, see https://github.com/XRPLF/rippled/actions/runs/25455105133/job/74682423667?pr=7079 . Since there is going to be clang-23 by end of 2026 , it's probably better to avoid listing these compiler versions individually.
…tizer to Release (XRPLF#7079)
High Level Overview of Change
This PR does not add any new builds. It does replace the following builds on Debian:
clang-20Debug onbookwormreplaced withclang-22ontrixie(ASAN and UBSAN)gcc-15Debug replaced withgcc-15Release (ASAN and UBSAN)Context of Change
Clang 22 was released by end of February 2026 and is now available in Ubuntu 26.04 Resolute LTS, let's ensure compatibility with this compiler.
ASAN and UBSAN may yield useful results on optimized builds, let's switch GCC from Debug to Release while using Clang for Debug.