From 9317189ab832c6df8d3a251100cec47e27ce4302 Mon Sep 17 00:00:00 2001 From: AztecBot Date: Fri, 8 May 2026 06:22:20 +0000 Subject: [PATCH] fix(bb): skip BatchMergeTests.TooManySubtablesFails under _GLIBCXX_DEBUG --- .../cpp/src/barretenberg/goblin/batch_merge.test.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/barretenberg/cpp/src/barretenberg/goblin/batch_merge.test.cpp b/barretenberg/cpp/src/barretenberg/goblin/batch_merge.test.cpp index ce0834b66282..1f3c91760311 100644 --- a/barretenberg/cpp/src/barretenberg/goblin/batch_merge.test.cpp +++ b/barretenberg/cpp/src/barretenberg/goblin/batch_merge.test.cpp @@ -471,6 +471,17 @@ TYPED_TEST(BatchMergeTests, TooManySubtablesFails) GTEST_SKIP() << "This test in native setting fails due to a deserialization failure. The verifier path in the " "same for native and recursive code, so it's enough to test the recursive code."; } else { +#ifndef NDEBUG + // BB_DISABLE_ASSERTS lets the prover continue past the N <= max_subtables BB_ASSERT_LTE in + // BatchMergeProver::construct_proof. Once past it, compute_degree_check_polynomial reads + // degree_check_challenges[idx] for idx up to flattened_columns.size() - 1, which exceeds + // the (max_subtables + 1) * NUM_WIRES challenges allocated. In release this is silent UB + // and the verifier still rejects the malformed proof; under _GLIBCXX_DEBUG the bounds + // check on std::vector::operator[] aborts the prover before the verifier runs. The + // verifier-rejection contract here is exercised by the release build. + GTEST_SKIP() << "Skipped under _GLIBCXX_DEBUG: BB_DISABLE_ASSERTS bypasses the prover's N <= max_subtables " + "guard, and the bounds-checked vector access then aborts before the verifier can reject."; +#else BB_DISABLE_ASSERTS(); auto op_queue = make_op_queue_with_n_subtables(TestFixture::NumSubtables + 1); auto res = TestFixture::prove_and_verify(op_queue); @@ -479,6 +490,7 @@ TYPED_TEST(BatchMergeTests, TooManySubtablesFails) if constexpr (TestFixture::IsRecursive) { EXPECT_FALSE(res.circuit_ok); // Assertions fail } +#endif } }