fmt.Printf("ReadAll from fd 3: %v", err)
os.Exit(1)
}
- // TODO(bradfitz,iant): the rest of this test is disabled
- // for now. remove this block once we figure out why it fails.
+ // TODO(bradfitz): remove this block once the builders are restarted
+ // with a new binary including be47ea17bea0 (set CLOEXEC on epoll/kqueue fds)
+ // and 5500053 (don't trust O_CLOEXEC on OS X).
{
os.Stderr.Write(bs)
os.Exit(0)
}
// There's a race here with fork/exec, which we are
- // content to live with. See ../syscall/exec.go
- if syscall.O_CLOEXEC == 0 { // O_CLOEXEC not supported
+ // content to live with. See ../syscall/exec_unix.go.
+ // On OS X 10.6, the O_CLOEXEC flag is not respected.
+ // On OS X 10.7, the O_CLOEXEC flag works.
+ // Without a cheap & reliable way to detect 10.6 vs 10.7 at
+ // runtime, we just always call syscall.CloseOnExec on Darwin.
+ // Once >=10.7 is prevalent, this extra call can removed.
+ if syscall.O_CLOEXEC == 0 || runtime.GOOS == "darwin" { // O_CLOEXEC not supported
syscall.CloseOnExec(r)
}