vp run: automatic input tracking crashes Git for Windows sh.exe child (Win32 error 487)

Offen
#3,121 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
55/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
git, node.js, rust
Bereich
backend, cli

Rechercherichtung

Start by reading the vp run task caching and automatic input tracking paths; the report does not name implementation files or tests. Reproduce with the linked gist on Windows using Git for Windows sh.exe, comparing the automatic and explicit input configurations. Done when the automatic-tracking task runs the shell command successfully while preserving the reported cache behavior.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug
Describe the bug

On Windows, a cache-enabled vp run task using default automatic input tracking makes a Git for Windows sh.exe child fail before executing its command:

0 [main] sh (...) C:\Program Files\Git\usr\bin\sh.exe: *** fatal error - MapViewOfFileEx 'shared.5'(0x120, size 59320, m 0, created 0), Win32 error 487. Terminating.

The same Node script succeeds with cache: false or explicit cache.input files. Both tracked variants use output: [], isolating the input-tracking configuration. The mapping-failure mechanism itself has not been diagnosed.

This breaks shell-using automation and test commands when adopting default task caching. Explicit input lists permit caching as a workaround, but require maintaining the dependency list manually.

Reproduction

https://gist.github.com/d3lay/a3102d1ed956f133d29ed4e9f186360b

Five synthetic files, with no application code, Vitest tests, credentials, hooks or Git repository required. Verified with a fresh public-registry installation outside every project checkout. The repro pins vite-plus to 1.3.0; the same failure was also observed with 1.1.0.

The entire program under test is:

import { spawnSync } from 'node:child_process'

const result = spawnSync('sh', ['-c', 'printf ok'], { encoding: 'utf8' })
process.stdout.write(result.stdout ?? '')
process.stderr.write(result.stderr ?? '')
if (result.error) console.error(result.error.message)
process.exitCode = result.status ?? 1
Steps to reproduce

Save the gist files together in an empty directory. With Git for Windows sh.exe on PATH:

pnpm install --ignore-scripts
pnpm exec vp cache clean
pnpm exec vp run uncached
pnpm exec vp run automatic
pnpm exec vp run explicit
pnpm exec vp run explicit

Expected: all task variants print ok and exit 0.

Observed after clearing the fixture cache:

Task Configuration Result
uncached cache: false ok, exit 0
automatic cache: { output: [] } sh.exe mapping failure, task exit 1
explicit explicit input files, output: [] ok, exit 0
explicit, unchanged second run same cache hit, replayed ok, exit 0

There is no Vite/Vitest/bundler invocation in the task; it is only Node launching sh. No system mitigation or ACL settings were changed for these controls.

System Info
  • Windows 11, OS build 10.0.26300, x64
  • Node.js 26.10.0
  • pnpm 12.8.2
  • Git for Windows 2.55.0.windows.3
  • sh --version: GNU bash 5.3.15(1)-release (x86_64-pc-cygwin)
  • Failing child executable: C:\Program Files\Git\usr\bin\sh.exe

Package-local pnpm exec vp --version in the reproduction:

vp v1.3.0

Local vite-plus:
  vite-plus  v1.3.0

Tools:
  vite             v8.3.4
  rolldown         v1.2.14
  vitest           v5.0.5
  oxfmt            v0.73.0
  oxlint           v1.88.0
  oxlint-tsgolint  v7.0.2004
  tsdown           v0.23.1

The package-local CLI reports that vp env current is available only through the global CLI. The global CLI manages the Node/pnpm versions above; its environment report is below with user-specific installation paths redacted:

Node.js:
  Version    26.10.0
  Source     .node-version
  Bin Path   <user-home>\AppData\Local\vite-plus\data\js_runtime\node\26.10.0\node.exe
  Installed  true
  Mode       managed

Package Manager:
  Name       pnpm
  Version    12.8.2
  Source     packageManager
  Bin Paths
    pnpm     <user-home>\AppData\Local\vite-plus\data\package_manager\pnpm\12.8.2\pnpm\bin\pnpm.exe
    pnpx     <user-home>\AppData\Local\vite-plus\data\package_manager\pnpm\12.8.2\pnpm\bin\pnpx.exe
  Installed  true
  Mode       managed
Used Package Manager

pnpm

Validations
  • Read the contributing guidelines.
  • Searched existing reports for MapViewOfFileEx, Win32 error 487, MSYS, and Git Bash/task caching; no matching report found.
  • Isolated to the vp run automatic-tracking path rather than an application or Vite/Vitest/Rolldown/Oxc invocation.
  • Provided a minimal runnable reproduction with uncached, explicit-input and warm-cache controls.
Vorherrschende Sprache
Rust
Sterne
6.5k
Forks
297
Ø Merge
1 T. 1 Std.
Gemergte PRs (30 T.)
249

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus voidzero-dev/vite-plus

Alle Issues in voidzero-dev/vite-plus

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.