Proposed by the 2026-07-07 jab multi-agent review; confirmed by both skeptic verifiers. The ULOG binding is the only one that hands a raw heap pointer across the JS boundary, so script-level misuse becomes native memory corruption.
(double)(size_t)h (jab ulog.hpp:258); JABCulogHandle casts any positive JS number straight back to jabc_ulog* with no validation (ulog.hpp:261-266).ULOGClose(...); free(h); (ulog.hpp:337-338) but nothing is nulled JS-side: ulog._close(h) twice is a double free; _append/_count after close is a UAF.abc._ulog_count(12345) — a forged number is dereferenced.