fix(bb): skip BatchMergeTests.TooManySubtablesFails under _GLIBCXX_DEBUG#23018
Closed
AztecBot wants to merge 1 commit into
Closed
fix(bb): skip BatchMergeTests.TooManySubtablesFails under _GLIBCXX_DEBUG#23018AztecBot wants to merge 1 commit into
AztecBot wants to merge 1 commit into
Conversation
Collaborator
Author
Flakey Tests🤖 says: This CI run detected 1 tests that failed, but were tolerated due to a .test_patterns.yml entry. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Nightly debug build failed today on commit
b30fe8f4becausegoblin_testsaborts inBatchMergeTests/2.TooManySubtablesFails(and/3).The test deliberately bypasses the
BB_ASSERT_LTE(N, max_subtables)guard inBatchMergeProver::construct_proofviaBB_DISABLE_ASSERTS()to exercise the verifier-rejection path when a malicious prover sendsN > max_subtablessubtable commitments. With the guard reduced to a warning, the prover continues intocompute_degree_check_polynomial, where it iterates overflattened_columns.size() == (N + 1) * NUM_WIRESwhile only(M + 1) * NUM_WIRESdegree_check_challengeswere allocated:In release this is silent UB and the verifier rejects the malformed proof (which is what the test asserts). In debug builds
_GLIBCXX_DEBUGturnsstd::vector::operator[]into a bounds-checked accessor and aborts the prover before the verifier can run, taking down the wholegoblin_testsbinary.This wasn't visible until now because the prior gemini-masking-poly OOB in
OinkProver::commit_to_masking_polyaborted earlier in the test sequence (ultra_honk_tests). With #22937 landed yesterday, the test sequence runs further and exposes this next debug-only abort.Fix
Skip
TooManySubtablesFailsunder_GLIBCXX_DEBUG(i.e. whenNDEBUGis not defined), matching the existing pattern used bycommitment_key.test.cpp:DISABLED_PippengerZeroCountRegression. The verifier-rejection contract is still exercised by release builds.Verification
cmake --preset debug -DAVM=OFFconfigures cleanly.ninja goblin_testsbuilds cleanly../bin/goblin_tests(debug, full suite): 66 passed, 9 skipped, 0 failed in 339 s. Previously aborted onBatchMergeTests/2.TooManySubtablesFails, never completing.dsl_tests(excluding the heavy recursion tests CI also skips): 511 passed, 2 skipped, 0 failed — confirms goblin was the failure point.ultra_honk_tests --gtest_filter='*Gemini*:*ZK*:*Mask*': 28 passed, 6 skipped — prior gemini fix intact.Detailed analysis: https://gist.github.com/AztecBot/4c24147944dda0075af7133ec531d68b
ClaudeBox log: https://claudebox.work/s/ae4964c11db54c2e?run=1
Failed CI run: https://github.com/AztecProtocol/aztec-packages/actions/runs/25478845904
ClaudeBox log: https://claudebox.work/s/ae4964c11db54c2e?run=1