You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CI: run the unit tests under valgrind memcheck on weekdays - #1462
Goal. Run every unit test under valgrind memcheck on weekdays at 9:00, 12:00 and 17:00 Paris time, so uninitialised reads and reads of freed memory surface within hours. The ASan and UBSan nightly does not report an uninitialised read: #1461 fixed 3 that only memcheck found.
Approach. One new workflow, ci_valgrind.yml, shaped like ci_sanitizers.yml: the same runner label, dependency cache and cleanup. It builds with RELDEBUG=1, so the test binaries keep their symbols, then runs ctest -T memcheck. A test fails on any memcheck error not covered by test/valgrind_suppressions.supp.
Where to look.
.github/workflows/ci_valgrind.yml:5 — the schedule, with the timezone key GitHub added in March 2026
.github/workflows/ci_valgrind.yml:34RELDEBUG — set for the whole job, because cmake reads it from the environment
.github/workflows/ci_valgrind.yml:72 — the ctest call: the 2 excluded tests and the valgrind options
on weekdays 9:00, 12:00, 17:00 Europe/Paris
install valgrind if the runner image lacks it
build dependencies (cached), configure with RELDEBUG=1, ninja
ctest -T memcheck
-E test_query_parser_mutant 1267 s under memcheck
-E test_query_ir_fuzz_hang its own 120 s timeout stops it
--error-exitcode=99 a memcheck error fails the test
--max-threads=2048 JobSystemTest starts 1024 workers
on failure: print each MemoryChecker log that has errors, upload all of them
1275 tests, 0 memcheck errors, 32 min 16 s wall, 4.0 h of test time
largest single test process 12.9 GB RSS
This workflow has not run yet. GitHub only dispatches a workflow that is on the default branch, so its first run comes after merge. The YAML parses.
Merge Danger
Door: two-way
Blast Radius: runners
Each run holds one ubuntu-24.04-turing runner for about an hour at -j8: the same tests took 32 min at -j8 on a dev machine, and a RELDEBUG rebuild took 21 min there. The job sets -j8 itself and ignores HOST_BUILD_JOBS, so ubuntu-runner-aws1 runs it at 8 too, not 16. That happens three times on each weekday, during working hours, so PR jobs on that label have one runner fewer while it runs. The RELDEBUG tree takes 49 GB of disk, against 3.4 GB for a release tree, and the cleanup step deletes it after the job. With 8 tests at once, memory is the limit to watch: one test alone reached 12.9 GB under memcheck, and the dev-machine run stayed inside a 32 GB cap. A dependency cache miss also builds LLVM at -j8.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Run the unit tests under valgrind memcheck on weekdays at 9:00, 12:00 and 17:00 Paris time.