mirror of
https://github.com/golang/go
synced 2024-11-23 14:20:05 -07:00
os/exec: skip poll descriptors when checking for open descriptors
It turns out that there is a path that initializes netpoll and opens file descriptors before running the os/exec init function: on some systems, the uses of NewFile when setting os.Stdin and friends can initialize netpoll which can open file descriptors. This in itself is not a problem, but when we check whether the new files are open using os.NewFile, a side-effect is to put them into non-blocking mode. This can then break future uses of netpoll. Updates #35469 Fixes #35566 Change-Id: I1b2e2c943695d1c2d29496b050abbce9ee710a00 Reviewed-on: https://go-review.googlesource.com/c/go/+/207078 Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
49e05d4f91
commit
718f553915
@ -47,6 +47,9 @@ func init() {
|
||||
return
|
||||
}
|
||||
for fd := uintptr(3); fd <= 100; fd++ {
|
||||
if poll.IsPollDescriptor(fd) {
|
||||
continue
|
||||
}
|
||||
// We have no good portable way to check whether an FD is open.
|
||||
// We use NewFile to create a *os.File, which lets us
|
||||
// know whether it is open, but then we have to cope with
|
||||
|
Loading…
Reference in New Issue
Block a user