Several graf verbs that open their own graf context (own_open=true, ~18 MB of mmaps: 16 MB GRAF_ARENA + 2×1 MB obj bufs, plus keeper/kv) leak it whenever a post-open call() early-returns. be head ?<branch> (LOG.c:978 graf_head_ahead_behind) and be map: (MAP.c:229 GRAFMap) both own-open then hit fallible GRAFSwitchBranch/other calls that return without GRAFClose. Plus two partial-acquisition mmap leaks: WEAVEDecInit (GET.c:568) leaks 1-6 of its 7 regions on a mid-init map failure, and DAGAncestorsTunable (DAG.c:237) leaks the queue anonymous mmap when the immediately-following a_carve fails. All are reachable real error paths, not OOM-only. From the MEM sweep.
Owned graf opens and partial inits are not released on post-acquisition error returns.
be head ?<branch> (graf not already open) leaks the 18 MB own-open on a post-open call() error.be map: leaks the 18 MB own-open on GRAFSwitchBranch / later call() failures.call(wh128bMap, queue, cap) succeeds, the next a_carve fails, the queue mmap leaks.None; graf-internal. The own-open cases need a GRAFClose on every post-own-open error path; the partial-init cases need rollback of already-mapped regions.
Close the owned graf and roll back partial inits on every error path.