ctest: Fix spurious build failures with CTEST_USE_LAUNCHERS on Windows
Remove the stdio handle inheritance suppression originally added by
commit f262298b (... do not inherit pipes in child procs for ctest so
it can kill them, 2007-09-11, v2.6.0~1136
). It's not clear what problem
it was trying to solve, was only done in ctest
and not cmake
, and
since commit 9c3ffe24 (BUG: fix problem with stdout and stderr not
showing up in ms dos shells, 2007-09-25, v2.6.0~1066
) has not been done
in ctest
launched under interactive consoles.
Furthermore, the code has been spuriously breaking stdio when ctest
is
started with both stdout and stderr connected to the same pipe, such as
when ctest --launch
is used under ninja
. This is because it used
DuplicateHandle
with DUPLICATE_CLOSE_SOURCE
on the stdout handle and
then the stderr handle. If the handles are the same, then the stderr
handle becomes invalid in between these operations, leading to
likely-undefined behavior. Since !8665 (merged) this became more noticeable because
uv_spawn
performs additional verification on stdio handles.
This could be fixed by instead suppressing inheritance via
SetHandleInformation(h, HANDLE_FLAG_INHERIT, 0);
However, the functionality no longer seems necessary, so remove it.
Backport: release