From ff0d5a9adf3ba91fbc9264edd87fb0968f89c7fc Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sat, 5 Sep 2026 00:10:40 -0700 Subject: [PATCH] ci(mount-windows): clean up processes and don't let Logs step fail job (#11174) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "Mount and exercise" step left the weed.exe mini server and the final WinFsp mount running when it exited. The next step's pwsh.exe then failed with STATUS_DLL_INIT_FAILED (0xC0000142), failing a job whose actual test step had passed. The same code passed on both the PR branch and the next master run, so this was a transient launch failure — but it was caused by an unclean environment and made fatal by a diagnostic step. Tear down all weed.exe processes at the end of the test step so subsequent steps launch into a clean environment, and mark the Logs step continue-on-error so a diagnostic step can never fail the job on its own. --- .github/workflows/mount-windows.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/mount-windows.yml b/.github/workflows/mount-windows.yml index cd9db5685..91f61d809 100644 --- a/.github/workflows/mount-windows.yml +++ b/.github/workflows/mount-windows.yml @@ -185,8 +185,19 @@ jobs: if (Test-Path S:\walk) { throw "directory survived recursive delete" } Write-Host "::endgroup::" + # Tear down everything we started so the runner's later steps (Logs, + # post-checkout) launch into a clean environment. A WinFsp mount left + # active and a weed.exe holding winfsp-x64.dll have been seen to make + # the next step's pwsh.exe fail with STATUS_DLL_INIT_FAILED + # (0xC0000142), which fails a job whose actual test step passed. + try { Stop-Mount } catch { Write-Host "no mount to stop at teardown: $_" } + Get-CimInstance Win32_Process -Filter "Name = 'weed.exe'" | + ForEach-Object { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue } + Start-Sleep -Seconds 3 + - name: Logs if: always() + continue-on-error: true shell: pwsh run: | foreach ($f in 'C:\seaweed-mount.log','C:\seaweed-mount.err.log','C:\seaweed-remount.log','C:\seaweed-remount.err.log','C:\seaweed-remount2.log','C:\seaweed-remount2.err.log','C:\seaweed-dirmount.log','C:\seaweed-dirmount.err.log','C:\seaweed-mini.log','C:\seaweed-mini.err.log') {