Record verified carried parser phase accounting and stack repair
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# Carried-phase legacy stack regression
|
||||
|
||||
The first candidate `d11b99bb4ab1c817951557551db3a3c7cbd5c425` compiled and
|
||||
passed all 12 new carried-phase tests. Its full library run aborted with
|
||||
`STATUS_STACK_OVERFLOW` (3221225725) at the existing
|
||||
`ordinary_index::tests::small_stack_success_and_late_header_failure_leave_no_partial_owner`.
|
||||
That unchanged 128 KiB control passed in the completed 18073a6 baseline.
|
||||
It recorded 124 completed passes before the abort. The aborted run is not a
|
||||
complete test-suite result or the known 16-failure
|
||||
disposition. Its raw log SHA256 is
|
||||
`705752b2f18d5897719f689083227aa1e2df4e17f6bc07747490337681ef00fe`.
|
||||
|
||||
The exact first artifact is 42,221,568 bytes, SHA256
|
||||
`dccfaee7f43e563fe26517c6a5454cd06f849d7b72d1127a12d28779100e9016`.
|
||||
It was preserved locally before replacement. LLDB reproduced its overflow:
|
||||
Windows heap allocation through formatting, Exact::parse_decimal, Budget::exact,
|
||||
binding, declarations::parse, State::parse_typed, Parser::unit, parse_impl,
|
||||
parse_with_profile, parse, accepted, indexed and the original small-stack worker.
|
||||
No index operation is on the active stack at the fault.
|
||||
The debugger log SHA256 is
|
||||
`d3ede485caa0714030e7f95f10a64590334df4219ec836d4daf23db0cbea8138`.
|
||||
Its exit zero follows an explicit debugger kill of the stopped child and is not
|
||||
a passing test. No other application process was stopped.
|
||||
|
||||
Source-bound disassembly observed these prologue reservations: parse_impl
|
||||
11,144 bytes; parse_with_profile 312; accepted 1,752; indexed 1,704; actual worker
|
||||
7,752. A separate test harness shim shares the worker's demangled name and uses
|
||||
56 bytes; the two records must not be confused. These are selected static
|
||||
prologues, not a complete runtime stack measurement or proof of a sole cause.
|
||||
|
||||
The new retained input duplicated the 104-byte Limits/ProjectLimits policy in
|
||||
each later parsed/resolved/indexed/plan carrier. Independent review selected a
|
||||
smaller representation: consume input, transfer exact policy into the Budget
|
||||
and existing syntax limits, and retain only a small backing-owner guard.
|
||||
This avoids a new external policy lifetime or heap allocation. The wrapper,
|
||||
all resource arithmetic, expected values and existing small-stack tests remain
|
||||
unchanged. The corrected candidate is
|
||||
`fa7a980418ef99d772e67c66c28dfa7b5181f875`.
|
||||
|
||||
The corrected artifact is 42,223,104 bytes, SHA256
|
||||
`c990e77015f2e4535003875abe7d49199cead803ee60677d86cdf056da7d8298`.
|
||||
Its 12 focused cases pass and the complete full run returns 242 passed / 16
|
||||
failed, including passes for all nine prior stack-named controls. The originally
|
||||
aborting test is unchanged. Strict all-target core Clippy passes; formatting
|
||||
retains the byte-identical inherited eight diff blocks. Independent raw baseline
|
||||
comparison is recorded separately in the runtime review.
|
||||
|
||||
Corrected selected prologues are parse_impl 11,048 bytes, parse_with_profile
|
||||
200, accepted 1,432, indexed 1,496 and the actual worker 6,920. Their reductions
|
||||
sum to 1,568 bytes; parse remains 280 and the separate harness shim remains 56.
|
||||
This confirms reduced reservations in the inspected frames and a completed
|
||||
ordinary regression run. It is not a full-stack measurement, proof of a sole
|
||||
cause, or guarantee across every environment.
|
||||
|
||||
This investigation does not resolve the separate earlier rename-test full-pipeline
|
||||
128 KiB setup observation, grant a universal stack guarantee or accept emitted
|
||||
output. Raw launchers, receipts, traces and both source versions are preserved.
|
||||
Reference in New Issue
Block a user