#35957 ci: Enable Boost.MultiIndex invariant-checking mode
https://github.com/bitcoin/bitcoin/pull/35957 · · +5/-2 in 3 files, 1 commits · labels: Tests
Goal
- Catch subtle corruptions and container inconsistencies early during CI test runs
- Helps developers detect indexing and memory pool bugs before changes merge
This PR defines `BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING` in two CI debug jobs (`i686_no_ipc` and `native_previous_releases`) that already have `BOOST_MULTI_INDEX_ENABLE_SAFE_MODE` turned on. It explicitly skips the MSAN fuzzing job and documents why, as invariant checks would cause that job to exceed runner timeout limits.
Problem: Boost.MultiIndex containers can enforce internal data structure invariants during mutation in debug builds, but this check was previously omitted from the CI jobs running with safe mode.
Category: Build and CI (#21 of 55)
P3 · test coverage
- P3 because early detection of data structure corruptions adds maintenance value
- Provides useful debug-configuration hardening that can be safely deferred
Enables Boost.MultiIndex invariant assertions on two debug CI jobs, catching multi-index container corruptions early during CI test runs.
Membership: Modifies environment setup scripts under ci/test/.
Factors: security/stability 1, bug 0, performance 0, user value 0, leverage 1
Category: Test infrastructure (#19 of 45)
P3 · test coverage
- P3 because it turns hidden container inconsistencies into explicit CI test failures
- Improves regression detection for core data structures while remaining deferrable
Improves automated assertion coverage across multi-index operations executed within the modified CI test jobs.
Membership: Labeled 'Tests' and enables runtime invariant checking in the CI test suites.
Factors: security/stability 1, bug 0, performance 0, user value 0, leverage 1
Reviewability: Ready
- Ready to review
- Clean small change with all reviewer questions addressed
Clean diff, passing CI, and all reviewer questions have been answered.
Author status: Active; resolved all reviewer questions.
Resolved concerns:
- Commit message and title clarity resolved after fanquake's feedback.
- Job timeout concern on the MSAN fuzz runner addressed by excluding it and verifying execution times.
- Inline comment question about 180m vs 240m runner timeout clarified by hebasto linking the workflow run.
Agreement: Strong
- Positive feedback with earlier CI timeout concerns resolved
- Excluding the slow fuzz job resolved runtime timeout concerns (fanquake)
- Approach approval after independently reproducing job execution times (jeanpablojp)
Strong: Approach ACK from jeanpablojp with local timing verification; previous review questions from fanquake resolved.
Reviewers had initial questions regarding runner timeouts and commit wording, all of which were answered and addressed. jeanpablojp left an Approach ACK after confirming execution times locally.
- fanquake (2026-08-12): 'Shouldn't the commit message be "ci: Define BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING for debug builds"?'
- jeanpablojp (2026-08-21): 'Approach ACK. Ran the msan fuzz job here too, 16 threads, 208 min. It matches your 214.'
Objections:
| Reviewer | Kind | Harm | Status | Blocking | Author replied | Quote |
|---|---|---|---|---|---|---|
| fanquake | correctness | times out the MSAN fuzz CI job | resolved | no | yes | 2026-08-13: "Looks like this times out the MSAN fuzz job. How long did it take when you tested it locally?" Settled: 2026-08-21: jeanpablojp: "Approach ACK. Ran the msan fuzz job here too, 16 threads, 208 min. It matches your 214." |
Support:
- jeanpablojp: Approach ACK after reproducing the MSAN fuzz benchmark locally (208 min vs 214 min).
Participants: fanquake (objection), jeanpablojp (support)
State derived from the lists: substantive support, no open objection (jeanpablojp)
Review verdicts (DrahtBot): 0
- Approach ACK: jeanpablojp
Files
7 lines under test/bench/ci.
- ci/test/00_setup_env_native_fuzz_with_msan.sh +3/-0
- ci/test/00_setup_env_i686_no_ipc.sh +1/-1
- ci/test/00_setup_env_native_previous_releases.sh +1/-1
Card
This PR enables BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING in two CI debug jobs that already enable safe mode, catching potential multi-index container bugs during CI runs. The MSAN fuzz job is intentionally kept unchanged to prevent exceeding the runner's maximum runtime limit. Review feedback around execution timing and commit clarity has been resolved, and jeanpablojp gave an Approach ACK after reproducing the timing benchmark. The PR is clean and ready for final review.