From a7df7b9cdb34133aba9ba1581bc1f5ea6650309c Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 1 Aug 2018 14:50:11 -0700 Subject: [PATCH] misc/cgo/testcshared: force descriptor 30 to be closed when execing test Fixes #26730 Change-Id: I3396598282c814e75c0c4ef16f692dbe83d2935e Reviewed-on: https://go-review.googlesource.com/127395 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- misc/cgo/testcshared/cshared_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/misc/cgo/testcshared/cshared_test.go b/misc/cgo/testcshared/cshared_test.go index 77cefc5a66..89b19d653a 100644 --- a/misc/cgo/testcshared/cshared_test.go +++ b/misc/cgo/testcshared/cshared_test.go @@ -201,6 +201,16 @@ func run(t *testing.T, env []string, args ...string) string { t.Helper() cmd := exec.Command(args[0], args[1:]...) cmd.Env = env + + if GOOS != "windows" { + // TestUnexportedSymbols relies on file descriptor 30 + // being closed when the program starts, so enforce + // that in all cases. (The first three descriptors are + // stdin/stdout/stderr, so we just need to make sure + // that cmd.ExtraFiles[27] exists and is nil.) + cmd.ExtraFiles = make([]*os.File, 28) + } + out, err := cmd.CombinedOutput() if err != nil { t.Fatalf("command failed: %v\n%v\n%s\n", args, err, out) -- 2.50.0