windows-ci: the smoke run's Start-Process gets one retry (the exited-before-attach flake of release-0.3.21 run 37653903394, 7 October 2026, 17:40 UK)

Start-Process -Wait -PassThru on igneum-app.exe --version, which exits in milliseconds, threw "Cannot process request because the
process (6792) has exited" before PowerShell attached, and the release branch's Windows build went red on a runner race, not on the
build. Run-Capture now tries twice and prints the first failure; the second is the verdict. Checked here by the workflow shell
parse and the PowerShell 5.1 drive-reference check; the runner's own parse step runs on the next master push.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
igneum-labs 2026-10-07 16:59:54 +00:00
parent 2b9d50cc72
commit 9c97326aea

View file

@ -216,8 +216,14 @@ jobs:
run: |
$payload = Resolve-Path 'packaging\windows\igneum-windows-app'
function Run-Capture([string]$exe, [string]$flag) {
# Start-Process -Wait on an exe that exits in milliseconds can throw "Cannot process request because the process has
# exited" before it attaches (release-0.3.21 run 37653903394, 7 October 2026, 17:40 UK): one retry before the verdict.
$out = Join-Path $env:RUNNER_TEMP ('smoke-' + [IO.Path]::GetRandomFileName() + '.txt')
$p = Start-Process -FilePath $exe -ArgumentList $flag -Wait -NoNewWindow -PassThru -RedirectStandardOutput $out
$p = $null
foreach ($try in 1, 2) {
try { $p = Start-Process -FilePath $exe -ArgumentList $flag -Wait -NoNewWindow -PassThru -RedirectStandardOutput $out; break }
catch { if ($try -eq 2) { throw }; Write-Host ("Start-Process on {0} {1} failed once ({2}); second try" -f (Split-Path -Leaf $exe), $flag, $_.Exception.Message); Start-Sleep -Milliseconds 500 }
}
$text = if (Test-Path $out) { (Get-Content $out -Raw) } else { '' }
Write-Host ("{0} {1} -> exit {2}: {3}" -f (Split-Path -Leaf $exe), $flag, $p.ExitCode, $text.Trim())
if ($p.ExitCode -ne 0) { throw "$exe $flag exited $($p.ExitCode)" }