4b91822d
bench/jit_trace: harden mcode arena + jit.off the listener
Two infra fixes for the trace-stability gate, both reproduced on
Tarantool 3.8.0-entrypoint / LuaJIT 2.1.0-beta3 / macOS arm64.
1. Default JIT mcode arena (sizemcode=32K, maxmcode=512K) is too
small for our hot-path codegen footprint. Roughly 1 in 10 runs
the gate reports every check as 'stops=0' with no diagnostic —
indistinguishable from a real JIT topology regression. jit.v
shows 'failed to allocate mcode memory at hello_pb.lua:890'
(the packed lucky_numbers varint loop). Calling
jit.opt.start('sizemcode=64','maxmcode=4096') at the top of
the gate gives the arena enough headroom to hold both encoder
and decoder bodies for the proto3 + proto2 fixtures.
2. The trace listener callback itself can become hot enough to
be JIT-compiled, which then races with the function being
recorded (recording-while-recording). Reproduced with a fat
cb that appends event tuples to a table: starts go up but
stops drop to ~0. Calling jit.off(cb) on the listener
prevents this. The current cb body happens to dodge this
because its branches keep call sites polymorphic — but it's
fragile; any future extension (per-event timing, pc context)
would re-trigger the bug. Adds the jit.off as defense.
Verified 20/20 consecutive runs now report 37/37 passing (was
intermittently 0/37 before). Also drops a now-stale "(PLAN.M6)"
reference from the header comment.
beads-tarantool-protobuf-3o2
Eugene Blikh <bigbes@gmail.com> — 2026-05-18 19:50:45 UTC
Commit 4b91822d7ef3b46c24364ccafbe67db596d6047e —
view raw patch
Parent(s):
b1a11473
| File | Status | + | − |
|---|---|---|---|
bench/jit_trace.lua
|
M | +20 | -1 |