Summary
On Windows, a cached vp run task can hang after the first command in a compound script has completed, before the next && command starts.
This was reproduced with a script shape similar to:
{
"scripts": {
"test": "cargo test -p ox_mf2_parser --all-targets --color always && vp test"
}
}
Reproduction
Repro repo: https://github.com/kazupon/vite-task-windows-issue-1
(cause repo: https://github.com/intlify/intlify)
In GitHub Actions, the normal cached Windows run hangs, while the Windows --no-cache control run completes successfully.
Observed behavior
The cached run prints and completes the cargo test output, but never prints or starts the following $ vp test command.
Process snapshots show only the vpr / vp / node runner process tree remaining. No cargo, rustc, or vitest process remains. At workflow cleanup, GitHub Actions reports an orphaned vctip process.
Expected behavior
After the direct child process for the first command exits, the runner should observe completion and continue to the next && command, even if a descendant temporarily keeps stdout/stderr handles open.
Suspected cause
The cached execution path drains piped stdout/stderr before awaiting the direct child process. On Windows, if a descendant keeps an inherited pipe handle open, EOF never arrives, so the runner never reaches child wait or Windows Job Object cleanup.
Summary
On Windows, a cached
vp runtask can hang after the first command in a compound script has completed, before the next&&command starts.This was reproduced with a script shape similar to:
{ "scripts": { "test": "cargo test -p ox_mf2_parser --all-targets --color always && vp test" } }Reproduction
Repro repo: https://github.com/kazupon/vite-task-windows-issue-1
(cause repo: https://github.com/intlify/intlify)
In GitHub Actions, the normal cached Windows run hangs, while the Windows
--no-cachecontrol run completes successfully.Observed behavior
The cached run prints and completes the
cargo testoutput, but never prints or starts the following$ vp testcommand.Process snapshots show only the
vpr/vp/noderunner process tree remaining. Nocargo,rustc, orvitestprocess remains. At workflow cleanup, GitHub Actions reports an orphanedvctipprocess.Expected behavior
After the direct child process for the first command exits, the runner should observe completion and continue to the next
&&command, even if a descendant temporarily keeps stdout/stderr handles open.Suspected cause
The cached execution path drains piped stdout/stderr before awaiting the direct child process. On Windows, if a descendant keeps an inherited pipe handle open, EOF never arrives, so the runner never reaches child wait or Windows Job Object cleanup.