Skip to content

ch05_closure_nat_return trapped once in a full conformance run (unreproducible in ~960 attempts) — suspected rare runtime/GC flake in a CI gate #996

Description

@aallan

Summary

tests/conformance/ch05_closure_nat_return.vera (run level) trapped once during a full scripts/check_conformance.py run, and has not reproduced since:

FAIL (run): ch05_closure_nat_return
  Error: Reached `unreachable` WASM instruction
  Source backtrace: in main  (.../ch05_closure_nat_return.vera:41-57)

The only trap sites in main's emitted WAT are the sentinel assert(@Nat.0 == 42) and the two GC shadow-stack-overflow guards — so that one run either computed apply_fn(abs, -42) != 42 or hit a shadow-stack guard.

Reproduction attempts (all clean)

  • ~750 isolated executions of the program (500 tight-sequential + 150 parallel + 30 under VERA_EAGER_GC=1 + hash-seed sweeps) — 0 failures.
  • 12 further full check_conformance.py runs at the time of capture — 1 failure in 13 total.
  • A dedicated 12× full-suite batch (12 × 153 programs) after the fact — 0 failures.
  • The emitted WAT for the closure is deterministic and arithmetically correct (-42 → 0-(-42)=42 → guard false → 42), verified by inspection and ~40 boundary executions.

Assessment

Not attributable to the #984 guard logic (deterministic WAT, massive clean-run evidence); most consistent with a rare pre-existing runtime/GC/wasmtime interaction that this two-closure-plus-assert program happens to be able to surface. Filed because the program sits in a pre-commit + CI gate: even a ≪1% flake will eventually red an unrelated PR, and when it does, the failure should resolve here rather than start a fresh investigation.

If it fires again

Capture: the full check_conformance.py output, wasmtime --version, OS/arch, and whether the run was under parallel load. The shadow-stack guards in main are the prime suspect ($gc_sp overflow checks); VERA_EAGER_GC=1 did not reproduce, so a load-dependent GC timing interaction is the leading hypothesis.

Captured during the PR #995 review round — the verbatim failure output, trap-site analysis from the preserved WAT, full reproduction-attempt table, and environment details are documented in the first comment below.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingruntime-gcWASM runtime, host bindings, and GCtestingTest suite structure and coverage

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions