execute_process: Restore support for Windows programs requiring specific STARTUPINFO
Upstream libuv supports passing file descriptors >= 3 to child processes
via STARTUPINFOW
members reserved by the MSVC C run-time. However,
some programs use GetStartupInfoW
to initialize a STARTUPINFOW
structure to pass to CreateProcessW
without clearing the reserved
members. If we launch such programs with non-zero values in the
reserved members, the MSVC C run-time in their children may not
correctly associate the stdin/stdout/stderr streams' file descriptors
with the corresponding HANDLE
s.
Patch our copy of libuv to avoid using the reserved members. This
restores execute_process
support for the above-described programs as
we had prior to !8665 (merged).
It also enables support for such programs when launched by ctest
.
Fixes: #25996 (closed)
Fixes: #25889 (closed)
Backport: release
Manual-backport: release-3.28