-
Notifications
You must be signed in to change notification settings - Fork 18.8k
Closed
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.
Milestone
Description
What version of Go are you using (go version)?
go version go1.10 linux/amd64
What operating system and processor architecture are you using (go env)?
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/psanford/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/psanford/projects/go"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build953969108=/tmp/go-build -gno-record-gcc-switches"
What did you do?
After upgrading to 1.10 we had one test that started to hang intermittently. The test in question starts a child process which it kills by canceling a context object at the end of the test method. It does not do an explicit cmd.Wait().
Here is a minimal test case that demonstrates the problem:
https://play.golang.org/p/8rq41A5Khsm
I can get this to hang consistently by running it in a bash while loop:
$ while true; do go test -timeout 5s -v -count 1 .; sleep 0.1; done
=== RUN TestOSExecNoWait
start
done
--- PASS: TestOSExecNoWait (0.01s)
PASS
ok _/tmp 0.012s
=== RUN TestOSExecNoWait
start
done
--- PASS: TestOSExecNoWait (0.01s)
PASS
ok _/tmp 0.012s
=== RUN TestOSExecNoWait
start
done
--- PASS: TestOSExecNoWait (0.01s)
PASS
ok _/tmp 0.012s
=== RUN TestOSExecNoWait
start
done
--- PASS: TestOSExecNoWait (0.01s)
PASS
<hangs here indefinitely>
If I explicitly call cmd.Wait() the test does not hang. If I don't attach the child process' Stdout and Stderr to os.Std{out,err} the test does not hang.
On 1.9.4 the test does not hang.
Its also interesting that even though I specified -timeout 5s the test runner hangs forever.
binocarlos and ambareesh-jayakumari
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.The path to resolution is known, but the work has not been done.