Summary
(absvector <huge>) is not size-capped in the interpreter path, so an absurd size triggers an out-of-memory process abort (SIGKILL) instead of a catchable Shen error. This is the shen-rust analogue of pyrex41/shen-cl#3; shen-go already caps.
Repro
(absvector 100000000000) # tries to allocate ~100 billion slots -> OOM / SIGKILL
Observed vs expected
How it was found
The port-authored reader_fuzz::corpus_never_panics test includes (absvector 100000000000). It passes under cargo test --release (optimized) but the debug cargo test --workspace CI gate (Gate 3) was OOM-killed on it — surfacing the missing cap.
Fix
Cap absvector at 2^24 slots (~800× the largest vector the kernel itself allocates) and raise a catchable error above it, mirroring shen-go and shen-cl#3.
Summary
(absvector <huge>)is not size-capped in the interpreter path, so an absurd size triggers an out-of-memory process abort (SIGKILL) instead of a catchable Shen error. This is the shen-rust analogue of pyrex41/shen-cl#3; shen-go already caps.Repro
Observed vs expected
vec![...; n]allocation → OS OOM-kills the process;trap-errorcannot intercept.How it was found
The port-authored
reader_fuzz::corpus_never_panicstest includes(absvector 100000000000). It passes undercargo test --release(optimized) but the debugcargo test --workspaceCI gate (Gate 3) was OOM-killed on it — surfacing the missing cap.Fix
Cap
absvectorat2^24slots (~800× the largest vector the kernel itself allocates) and raise a catchable error above it, mirroring shen-go and shen-cl#3.