Fixes #20134
Change-Id: I92699d118c713179961c037a6bbbcbec4efa63ba
Reviewed-on: https://go-review.googlesource.com/41823
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
import (
"fmt"
"internal/testenv"
+ "io/ioutil"
"os"
osexec "os/exec"
"os/signal"
"runtime"
+ "strconv"
+ "strings"
"syscall"
"testing"
"time"
t.Skip("FreeBSD does not use the poller; issue 19093")
}
+ limit := 1
+ if !read {
+ // Get the amount we have to write to overload a pipe
+ // with no reader.
+ limit = 65537
+ if b, err := ioutil.ReadFile("/proc/sys/fs/pipe-max-size"); err == nil {
+ if i, err := strconv.Atoi(strings.TrimSpace(string(b))); err == nil {
+ limit = i + 1
+ }
+ }
+ t.Logf("using pipe write limit of %d", limit)
+ }
+
r, w, err := os.Pipe()
if err != nil {
t.Fatal(err)
}
}()
- // A slice larger than PIPE_BUF.
- var b [65537]byte
+ b := make([]byte, limit)
if read {
_, err = r.Read(b[:])
} else {