posix_spawn: Don't attempt to dup2 identical fds #214
Merged
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.
Editorial note: @snoyberg, I'd like to again apologize for how many iterations this
posix_spawn
work has required; it really has been a compatibility nightmare. This particular issue remained under the radar in my Darwin testing on GHC as I had chalked it up to a GHC bug, having seen the same test fail for reasons unrelated toprocess
. Sadly, this time the failure is actually due to a bug in Darwin'sposix_spawn_file_actions_adddup2
implementation. Thanks again, for your patience.macOS Big Sur does not allow the user to
posix_spawn_file_actions_adddup2
anfd to itself. Instead of behaving as a no-op as specified by POSIX
2017.1 (and as done by every other operating system), it instead fails with
EBADFD
inposix_spawn
. This caused a single tricky-to-identifyfailure in GHC's testsuite.