lib: Attach stdout to child only if --log=stdout and stdout FD is a tty (backport #16738) #16965
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We've faced with a regression after we moved from frr 8.5 to a newer versions (9.0, 9.1, 10.0, 10.1).
In our automation we start frr from python code using subprocess like this:
This call hangs in
poll()
for stdout FD indefinitely andfrrinit.sh
hangs in zombie state unless we killsubprocess.run()
call.If we remove stdout capturing from
subprocess.run()
call (make associated to stdout FD a tty FD), things go well and process terminates correctly with no hangs and zombies.This commit fixes this situation where stdout of a process started in a daemon mode was attached to a calling process regardless of presence
--log
option.If this patch is acceptable, it's worth backporting down to 9.0 branch, where the initial commit 4d28aea appeared.
This is an automatic backport of pull request #16738 done by Mergify.