58 lines
3.4 KiB
Markdown
58 lines
3.4 KiB
Markdown
# 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.
|