From: Brad Fitzpatrick Date: Wed, 23 Apr 2014 00:13:38 +0000 (-0700) Subject: os/exec: deflake a test on Linux X-Git-Tag: go1.3beta2~197 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=56005722493b044109103d0ebb867561f1c71e3c;p=gostls13.git os/exec: deflake a test on Linux Work around buggy(?) Linux /proc filesystem. Fixes #7808 LGTM=iant R=golang-codereviews, iant CC=adg, golang-codereviews https://golang.org/cl/90400044 --- diff --git a/src/pkg/os/exec/exec_test.go b/src/pkg/os/exec/exec_test.go index ca19fe9bee..7a95579f15 100644 --- a/src/pkg/os/exec/exec_test.go +++ b/src/pkg/os/exec/exec_test.go @@ -224,10 +224,21 @@ func TestPipeLookPathLeak(t *testing.T) { t.Fatal("unexpected success") } } - open, lsof := numOpenFDS(t) - fdGrowth := open - fd0 - if fdGrowth > 2 { - t.Errorf("leaked %d fds; want ~0; have:\n%s\noriginally:\n%s", fdGrowth, lsof, lsof0) + for triesLeft := 3; triesLeft >= 0; triesLeft-- { + open, lsof := numOpenFDS(t) + fdGrowth := open - fd0 + if fdGrowth > 2 { + if triesLeft > 0 { + // Work around what appears to be a race with Linux's + // proc filesystem (as used by lsof). It seems to only + // be eventually consistent. Give it awhile to settle. + // See golang.org/issue/7808 + time.Sleep(100 * time.Millisecond) + continue + } + t.Errorf("leaked %d fds; want ~0; have:\n%s\noriginally:\n%s", fdGrowth, lsof, lsof0) + } + break } }