New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
net/http/cgi: TestCopyError is flaky on some darwin/386 #4958
Labels
Milestone
Comments
all we know is that the builder runs OS X 10.7 on 2011 Mac Mini, 2.4Ghz Core i5. (see https://code.google.com/p/go-wiki/wiki/DashboardBuilders) because they are run by dave, perhaps we can ask him to provide more details. |
I looked at the test, trying to eyeball the flakiness, but it seems fine. The parent host process has just started reading 1 MB from the child process. The child must have been there if the headers were all read correctly, and the child shouldn't already be gone, since it has 1 MB of data to write. It's not possible that on older OS X, the pipe has a buffer size >= 1 MB, is it? The other possibility is that isProcessRunning (signals?) is unreliable on old OS X: from posix_test.go: func isProcessRunning(t *testing.T, pid int) bool { p, err := os.FindProcess(pid) if err != nil { return false } return p.Signal(syscall.Signal(0)) == nil } |
OS X uses some tricks to expand the pipe buffers if it decides that doing so would make programs would run faster, up to a true maximum of 16 MB. The exact code seems to change from version to version, but the 10.7.5 kernel that Dave reported does include this code. Perhaps running the builder in a loop was enough to make the kernel think this was a worthwhile optimization. :-) |
Crazy. Sent out https://golang.org/cl/7453049 |
This issue was closed by revision 7903e36. Status changed to Fixed. |
This issue was closed.
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
The text was updated successfully, but these errors were encountered: