ci(windows): MSYS tools sometimes crash with "add_item … failed"

Problem:
On Windows, a test that runs a Git `usr/bin` tool (`cat`, `diff`, …) sometimes stalls 15s and
then fails:

    FAILED   test/functional/vimscript/system_spec.lua @ 470: systemlist() passing string with linefeed characters as input splits the output on linefeed characters
    Expected:
    { "abc", "def", "ghi" }
    Actual:
    { '      0 [main] cat (2736) C:\\Program Files\\Git\\usr\\bin\\cat.exe: *** fatal error - add_item ("\\??\\C:\\Program Files\\Git", "/", ...) failed, errno 1' }

The MSYS runtime sets up per-user shared state on first use. If a test kills an MSYS process
(CTRL-C) during that setup, the next MSYS process (in any parallel test group) waits 15s for
it, then sets it up again and dies.

Solution:
Keep an MSYS process (`sleep infinity`) alive for the test run, so the setup happens only once.
This commit is contained in:
Justin M. Keyes committed 2026-10-19 18:50:55 +02:00
1 parent 139a376a6d
commit 9916944868
1 file changed
+4
+4
View File
@@ -67,6 +67,10 @@ jobs:
TEST_TIMEOUT: 600
run: |
$ErrorActionPreference = 'Continue'
# Keep an MSYS process (Git's usr/bin) alive, so the MSYS runtime initializes its shared
# state only once. Else a test that kills an MSYS process during that init (CTRL-C) can
# make the next one stall 15s and die: "fatal error - add_item (...) failed, errno 1".
Start-Process -WindowStyle Hidden (Get-Command sleep.exe).Source infinity
# `-k 0` tells ninja to continue running all targets even if some fail.
cmake --build build --target functionaltest-parallel -j 2 -- -k 0
$exitCode = $LASTEXITCODE