docs(terminal): name the stdin=DEVNULL atom of the Git Bash probe (#73403)

Review follow-up: the comment in _bash_starts now says why stdin=DEVNULL matters
beyond the bounded cleanup — cygwin init's handle_to_fn/NtQueryObject stalls on a
pipe file object that has a read pending (the ACP host's stdin), which is why the
probe blew its timeout inside ACP hosts — and why stderr stays captured (the
Mandatory-ASLR remediation keys off bash's dofork:/child_copy: text).
This commit is contained in:
teknium1
2026-09-18 23:07:54 -07:00
committed by Teknium
parent 4690195506
commit 1bc953d342

View File

@@ -93,6 +93,11 @@ def _bash_starts(bash: str) -> bool:
# killed bash holding the pipe write ends — the ACP host then wedged for minutes (#73403).
# The probe's tree is killed and the drain bounded, so a slow host fails the probe fast
# and _find_bash falls through to its last-resort candidate instead of hanging.
# stdin=DEVNULL (inside bounded_probe_run) is also what keeps the probe off the ACP
# host's stdin pipe: cygwin init's handle_to_fn/NtQueryObject stalls ~22 s on a pipe
# file object with a read pending on it, and the host's stdin reader always has one
# (@Aaaarminn's strace on #73403). stderr stays captured: the Mandatory-ASLR
# remediation keys off bash's dofork:/child_copy: text.
result = bounded_probe_run(
[bash, "--noprofile", "--norc", "-c", _BASH_EXTERNAL_PROGRAM_PROBE],
timeout=_BASH_PROBE_TIMEOUT, raise_on_spawn_failure=True)