Berkeley DB (libdb) 5.3.32
Coverage-and-correctness release. A sustained code-coverage program raised authoritative full-suite coverage from 48% → mid-70s line (branch 36% → mid-40s) by exercising previously-cold subsystems, and found + fixed 4 error-path/latent bugs — 3 of them inherited from upstream Oracle Berkeley DB.
Bug fixes
| Bug | Origin |
|---|---|
env — DB_PRIVATE region leak on the corrupt-open error path |
found by fuzzing |
db — heap page-item bounds check used btree/hash inp[] semantics → db_dump on a heap DB with deleted records exited non-zero |
regression from file-hardening; found by heap coverage |
upgrade — __db_set_lastpgno stored page count vs last page number (off-by-one) → v8→v9 upgrade failed db_verify |
latent since upstream BDB 4.7/4.8; found by upgrade coverage |
mpool — __memp_remove_region indexed one past the last region → SIGSEGV on any cache shrink (resize_cache downward) |
inherited from upstream; found by MVCC/resize coverage |
Coverage lifts (existing-but-unrun tests + targeted C drivers; no engine change)
replication 0.8→57%, log-verify 0→50%, XA 0→57%, on-disk upgrade 0→57-97%, the statistics family 17-29→62-87%, deadlock detector + DB_REGISTER →66/55%, async-I/O backends 0→73-84%, MVCC freeze/thaw + cache resize 9→70/58%, crypto/HMAC/AES →78-96%, hot backup + DB_CONFIG parser →97/72%, recovery-handler branches (hash_rec/qam_rec) 0→24/46%.
Testing infrastructure (carried from v5.3.31)
DST (25 scenarios + swarm, 5 planted bugs caught at seed 1), Hegel PBT, libFuzzer harnesses + regression seeds, malloc-fault injection, Coccinelle + libabigail ABI checks, gcov/lcov coverage in CI — 9 CI workflows total.
Qualification
Clean build; SSI + all 5 access methods + verify; 25/25 DST scenarios; 4/4 fuzz crash reproducers — all pass.