Commit 010f20d
authored
fix: resolve _GLIBCXX_DEBUG assertion failures in nightly debug build (#22039)
## Summary
Three latent out-of-bounds bugs exposed by `_GLIBCXX_DEBUG` bounds
checking in the debug preset:
1. **batched_affine_addition.cpp**: `subspan(offset, count)` used `count
= 2*total_num_pairs` but only `total_num_pairs` elements are accessed —
fixed count argument.
2. **scalar_multiplication.hpp**: `&v[0]` on empty vector when all MSM
scalars are zero — changed to `v.data() + offset`.
3. **gemini_impl.hpp**: `multilinear_challenge[l]` accessed OOB when
polynomial degree exceeds `2^(challenge size)` — added bounds check,
falls back to `u=0` (even-part fold).
## Verification
- `ecc_tests` (830), `commitment_schemes_tests` (88), `ultra_honk_tests`
(263): all pass in both debug and release builds.
- Full debug build (814 targets): compiles cleanly.
Detailed analysis:
https://gist.github.com/AztecBot/730124390e63fc60844a394f2d224fb76 files changed
Lines changed: 25 additions & 20 deletions
File tree
- barretenberg/cpp/src/barretenberg
- commitment_schemes/gemini
- crypto/hmac
- eccvm
- ecc
- batched_affine_addition
- scalar_multiplication
- stdlib/hash/poseidon2
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | | - | |
141 | | - | |
| 140 | + | |
| 141 | + | |
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
| |||
161 | 161 | | |
162 | 162 | | |
163 | 163 | | |
164 | | - | |
| 164 | + | |
165 | 165 | | |
166 | 166 | | |
167 | 167 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
139 | | - | |
140 | | - | |
| 139 | + | |
| 140 | + | |
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
146 | | - | |
| 146 | + | |
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
| |||
Lines changed: 6 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
121 | 126 | | |
122 | 127 | | |
123 | 128 | | |
124 | | - | |
125 | | - | |
126 | | - | |
| 129 | + | |
127 | 130 | | |
128 | 131 | | |
129 | 132 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
427 | | - | |
428 | | - | |
429 | | - | |
430 | | - | |
431 | | - | |
432 | | - | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
433 | 435 | | |
434 | | - | |
435 | | - | |
436 | | - | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
437 | 439 | | |
438 | 440 | | |
439 | 441 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
249 | 249 | | |
250 | 250 | | |
251 | 251 | | |
| 252 | + | |
252 | 253 | | |
253 | | - | |
254 | | - | |
| 254 | + | |
255 | 255 | | |
256 | 256 | | |
257 | 257 | | |
| |||
0 commit comments