tools(i422): parameterised debug-heap loop + plain rate loop; #422 re-characterised after it fired on the retail matrix row

The fault is pack-independent (fired on the retail preset, 1080p, 45 s,
first launch after a build), ~1 in 57 offline runs today, never under a
debugger (46 runs), no WER/event trace on this machine. The pre-campaign
binary cannot be measured with this gate (no in-process close verb).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-23 05:19:18 +02:00
parent 621a0edfc6
commit fe56b6cf32
3 changed files with 58 additions and 5 deletions

View file

@ -5,11 +5,18 @@
summarised to artifacts/i422dh/summary.txt.
.EXAMPLE
pwsh tools/i422/loop-debugheap.ps1 -Runs 24
# the recipe that reproduced #422 at VM7 (retail preset, 1080p, 45 s warm-up):
pwsh tools/i422/loop-debugheap.ps1 -Runs 8 -Preset retail -Resolution 1920x1080 -WarmupMs 45000 -OutLeaf i422dh-retail1080
#>
param([int]$Runs = 24)
param(
[int]$Runs = 24,
[ValidateSet('retail', 'low', 'medium', 'high', 'auto')][string]$Preset = 'high',
[string]$Resolution = '1280x720',
[int]$WarmupMs = 12000,
[string]$OutLeaf = 'i422dh')
$ErrorActionPreference = 'Continue'
$repo = (Resolve-Path (Join-Path $PSScriptRoot '..\..')).Path
$root = Join-Path $repo 'artifacts\i422dh'
$root = Join-Path $repo ('artifacts' + [IO.Path]::DirectorySeparatorChar + $OutLeaf)
New-Item -ItemType Directory -Force $root | Out-Null
$summary = Join-Path $root 'summary.txt'
"run,gateExit,shutdownLine,heapLine" | Set-Content $summary
@ -19,7 +26,7 @@ for ($i = 1; $i -le $Runs; $i++) {
$gateErr = Join-Path $root ("gate-{0:D2}.err" -f $i)
$gate = Start-Process -FilePath 'pwsh' -ArgumentList @(
'-NoProfile', '-File', (Join-Path $repo 'tools\run-offline-pixel-gate.ps1'),
'-Out', $out, '-SkipBuild', '-RenderPackPreset', 'high', '-Uncapped',
'-Out', $out, '-SkipBuild', '-RenderPackPreset', $Preset, '-Resolution', $Resolution, '-WarmupMs', "$WarmupMs", '-Uncapped',
'-DebuggerScript', (Join-Path $repo 'tools\cdb\i422-heap-launch.cdb')) `
-PassThru -WindowStyle Hidden -RedirectStandardOutput $gateOut -RedirectStandardError $gateErr
$gate.WaitForExit()