You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Windows leg of CI (CI Tests workflow) hangs on the E2E debugger-attach
test CanAttachScriptWithPathMappings and rides GitHub Actions' default
6-hour job timeout. The root cause is not a PSES code change — it is a windows-latest runner-image refresh that broke in-box Windows PowerShell
5.1's cross-process attach. This issue tracks the real fix; PR #2318 is a
stopgap (skip the test on in-box WinPS + a 30-minute timeout-minutes
backstop).
Same image family, same runner agent (2.335.1), same -Preview PowerShell.
The only thing that moved at the boundary is the weekly OS-servicing patch in
the image. That refresh broke in-box Windows PowerShell 5.1's cross-process Debug-Runspace / Enter-PSHostProcess attach — exactly the path this test
exercises. The precise servicing delta (likely a .NET Framework or Windows
named-pipe/IPC update) is still unidentified and is the main open question
here.
Symptoms
The hang is specifically the in-box Windows PowerShell E2E suite
(TestE2EPowerShell). PowerShell Core (TestE2EPwsh) and the preview pass
the same attach test; macOS and Linux pass in ~5 minutes.
The test wedges on the attach handshake and the run sits on that single
test until the job is killed.
Its xUnit [SkippableFact(Timeout = 15000)] never fires: the wedge blocks
in a way xUnit's cooperative timeout cannot abort, so it is reported as a
"Long Running Test" climbing past 20+ minutes.
Not the -Preview PowerShell. The preview pwsh suite passes; it is the
in-box Windows PowerShell suite that hangs. (An earlier draft of this issue
hypothesized the preview — that is disproven.)
Skip CanAttachScriptWithPathMappings on in-box Windows PowerShell
(IsWindowsPowerShell, covering the WinPS and WinPS-CLM suites) so the windows-latest leg completes; Core / preview / macOS / Linux keep full
coverage of the attach path.
timeout-minutes: 30 on the matrix test job as a permanent backstop.
Next steps toward a real fix
Identify the precise 20260614 servicing delta (.NET Framework / Windows
IPC) that changed in-box WinPS 5.1 attach behavior.
Capture a hung Windows run's process/runspace state or DAP transcript to see
where the attach handshake stalls under the new image.
Investigate the harness's readiness logic (RunWithAttachableProcess keys
off RunspaceBase.AvailabilityChanged via reflection) and the Debug-Runspace handshake for an OS-version-sensitive race.
Summary
The Windows leg of CI (
CI Testsworkflow) hangs on the E2E debugger-attachtest
CanAttachScriptWithPathMappingsand rides GitHub Actions' default6-hour job timeout. The root cause is not a PSES code change — it is a
windows-latestrunner-image refresh that broke in-box Windows PowerShell5.1's cross-process attach. This issue tracks the real fix; PR #2318 is a
stopgap (skip the test on in-box WinPS + a 30-minute
timeout-minutesbackstop).
Root cause: runner-image refresh
20260608→20260614Comparing the last-green and first-red
mainruns:win25-vs2026/20260608.135.20260614.141.Same image family, same runner agent (
2.335.1), same-PreviewPowerShell.The only thing that moved at the boundary is the weekly OS-servicing patch in
the image. That refresh broke in-box Windows PowerShell 5.1's cross-process
Debug-Runspace/Enter-PSHostProcessattach — exactly the path this testexercises. The precise servicing delta (likely a .NET Framework or Windows
named-pipe/IPC update) is still unidentified and is the main open question
here.
Symptoms
(
TestE2EPowerShell). PowerShell Core (TestE2EPwsh) and the preview passthe same attach test; macOS and Linux pass in ~5 minutes.
test until the job is killed.
[SkippableFact(Timeout = 15000)]never fires: the wedge blocksin a way xUnit's cooperative timeout cannot abort, so it is reported as a
"Long Running Test" climbing past 20+ minutes.
What we ruled out
fingered Match strong-name identity when resolving PSES dependencies #2303, but that was confounded: Match strong-name identity when resolving PSES dependencies #2303 was the first merge onto the
new image, so the image bump and the code change moved together. Two
independent proofs exonerate it:
PsesLoadContext.cs(the file Match strong-name identity when resolving PSES dependencies #2303 touched) is<Compile Remove>'d fornet462and uses the Core-onlyAssemblyLoadContext. In-box WinPS 5.1loads
bin/Desktop/(net462), so Match strong-name identity when resolving PSES dependencies #2303's code is not even compiled intothe hanging configuration.
still hung on the new image (killed by the 30-minute cap).
-PreviewPowerShell. The preview pwsh suite passes; it is thein-box Windows PowerShell suite that hangs. (An earlier draft of this issue
hypothesized the preview — that is disproven.)
ReadScriptLogLineAsync. The test wedges on the attach handshakebefore it reaches that helper. (PR Skip attach E2E test on in-box Windows PowerShell (20260614 image regression); cap CI job #2318 still hardens that EOF/poll spin as
general hygiene, but it is not the cause.)
Mitigation (PR #2318)
CanAttachScriptWithPathMappingson in-box Windows PowerShell(
IsWindowsPowerShell, covering the WinPS and WinPS-CLM suites) so thewindows-latestleg completes; Core / preview / macOS / Linux keep fullcoverage of the attach path.
timeout-minutes: 30on the matrix test job as a permanent backstop.Next steps toward a real fix
20260614servicing delta (.NET Framework / WindowsIPC) that changed in-box WinPS 5.1 attach behavior.
where the attach handshake stalls under the new image.
RunWithAttachableProcesskeysoff
RunspaceBase.AvailabilityChangedvia reflection) and theDebug-Runspacehandshake for an OS-version-sensitive race.Skip.Iffrom Skip attach E2E test on in-box Windows PowerShell (20260614 image regression); cap CI job #2318; thetimeout-minutesbackstopcan stay.
References