Skip to content

Berkeley DB (libdb) 5.3.32

Choose a tag to compare

@gburd gburd released this 30 Jul 10:52

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
envDB_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.