mirror of
https://github.com/Cheviiot/Vintner.git
synced 2026-08-03 15:57:24 +00:00
msbuild (and the toolrelay.exe-less fallback path for cl/link/etc.) inherited os.Stdout/os.Stderr directly into the wine subprocess. Wine's wineserver and its service processes (services.exe, winedevice.exe, explorer.exe, ...) inherit those same descriptors and keep running well after the actual build finishes, so a caller piping our output (`| tee`, `| tail`, CI log capture) would never see EOF and hang indefinitely - even though the real build completed in seconds. Both paths now pipe stdout/stderr through our own copy goroutines, wait for the tool's own process (not pipe EOF) to determine completion, and grant a bounded 500ms grace period to drain whatever's already buffered before moving on. Verified against a real hang (msbuild building freetype.vcxproj piped through `tail`) and confirmed instant return after the fix, both on success and on a build error.