71 lines
4.3 KiB
Markdown
71 lines
4.3 KiB
Markdown
# Emission checkpoint stack investigation
|
|
|
|
2026-09-25. Source `19a4082117b88caf332198e4c685bde91005cb52` compiled and
|
|
passed all eleven new emission tests, including the seven scoped 128 KiB
|
|
success/no-op/refusal/deep/wide worker cases. Its full library run then aborted
|
|
with STATUS_STACK_OVERFLOW (3221225725) in the unchanged ordinary-index
|
|
`small_stack_success_and_late_header_failure_leave_no_partial_owner` control.
|
|
There were 135 completed passing outcomes before abort. This is not the completed
|
|
sixteen-failure baseline.
|
|
|
|
The exact artifact is 42,402,816 bytes, SHA256
|
|
`777457cfefb8a3046e3f0809cabd936cfb742abe792befad2c50e05dfac1bf6b`.
|
|
It was copied locally before replacement, under the gates folder's artifacts
|
|
directory; it is identified rather than included in the evidence ZIP.
|
|
The initial full log SHA256 is
|
|
`7a23c1151cfba02f6527bef6c8ffd53ffa5eac0e0598e37728733bc85230e538`.
|
|
|
|
LLDB reproduced the failure in Windows heap allocation beneath String formatting,
|
|
Exact::parse_decimal, Budget::exact, Cursor::exact_literal, syntax::binding,
|
|
declarations::parse, State::parse_typed, Parser::unit and parse_impl. No emission
|
|
method is on this active stack. The worker is in its initial rich-source parsing
|
|
path. Debugger log SHA256:
|
|
`fca0fc9a3c59b95beb84d1690df6f0b289dcc46bd949337de555f7102b2cce59`.
|
|
The stopped child PID 3724 was explicitly killed. Debugger exit zero reports
|
|
that controlled observation, not a passed test; no child remains running.
|
|
|
|
Symbol-bound prologue records show these selected frames are identical to the
|
|
previous passing fa7 artifact: parse_impl 11,048 bytes, parse_with_profile 200,
|
|
parse 280, accepted 1,432, indexed 1,496 and the actual worker 6,920. The separate
|
|
same-named test shim is 56. The new emitter does not add fields to old owners or
|
|
change those parser/test sources. Thus the prior duplicated-policy explanation
|
|
does not apply to this recurrence. This observation does not establish the full
|
|
cause of process/layout/heap-dependent stack headroom variation.
|
|
|
|
Additional active-frame observations identify binding at 27,272 bytes,
|
|
declarations::parse at 22,664, Parser::unit at 11,864, State::parse_typed at
|
|
6,952, Exact::parse_decimal at 2,296, parse_literal at 952, Budget::exact at
|
|
632 and Cursor::exact_literal at 776. Prologues are not complete live-stack
|
|
measurements; calls, OS/library frames and padding remain outside this list.
|
|
|
|
The selected repair separates the existing iterative binding driver from its
|
|
prefix and continuation operations. Numeric prefix parsing should no longer
|
|
carry stack slots for unrelated continuation construction. It preserves the
|
|
same task/value vectors, processing order, accounting and policies. No numeric
|
|
formatting change, larger stack, heap wrapper, optimizer attribute or weakened
|
|
test is selected. Independent mechanical source review and measured rebuilt
|
|
prologues plus the unchanged runtime controls are required before acceptance.
|
|
|
|
Repair source is `8d52dab97c92cc31baae9f20d8c324b55818aa5d`. Independent
|
|
mechanical review confirms the continuation operations are token-identical and
|
|
the prefix operations differ only by two optional trailing argument commas.
|
|
The compiled binding driver reserves 2,520 bytes and its active prefix helper
|
|
11,720: 14,240 bytes together versus the former 27,272, a 13,032-byte reduction
|
|
in these selected prologue reservations. The mutually exclusive continuation
|
|
helper reserves 13,416 bytes (15,936 with the driver); it must not be added to
|
|
the active numeric-prefix sum. Other observed frames retain their prior sizes.
|
|
These figures exclude call overhead and are not a complete live-stack bound.
|
|
|
|
The final artifact is 42,402,816 bytes, SHA256
|
|
`29d8a4761fd8f09a3c0eafeb11cca07f0d45c711bf1b969d97c8b29d2b3ab446`.
|
|
All eleven focused tests pass. The full run completes with 253 passed and 16
|
|
failed; exact baseline reconciliation is recorded in RUNTIME-REVIEW.md.
|
|
The unchanged previously overflowing control also passes three fresh processes,
|
|
with no stack override or test edits. Their separate receipts preserve all
|
|
attempts. Strict core all-target Clippy passes; formatting output remains the
|
|
inherited eight blocks in five files. The evidence supports this bounded repair,
|
|
not universal stack safety or an explanation of all process headroom variation.
|
|
|
|
The older rename full-pipeline setup observation remains separate; this work
|
|
does not retroactively turn an unrerun historical fixture into a pass.
|