runtime: deflake CGO traceback tests

The CGO traceback function is called whenever CGO code is executing and
a signal is received. This occurs much more frequently now SIGURG
is used for preemption.

Disable signal preemption to significantly increase the likelihood that
a signal results in a profile sample during the test.

Updates #37201

Change-Id: Icb1a33ab0754d1a74882a4ee265b4026abe30bdc
Reviewed-on: https://go-review.googlesource.com/c/go/+/219417
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Mark Pulford 2020-02-14 08:34:31 +11:00 committed by Ian Lance Taylor
parent 1e9665da8f
commit a908e09a34

View File

@ -275,7 +275,13 @@ func testCgoPprof(t *testing.T, buildArg, runArg, top, bottom string) {
t.Fatal(err) t.Fatal(err)
} }
got, err := testenv.CleanCmdEnv(exec.Command(exe, runArg)).CombinedOutput() // pprofCgoTraceback is called whenever CGO code is executing and a signal
// is received. Disable signal preemption to increase the likelihood at
// least one SIGPROF signal fired to capture a sample. See issue #37201.
cmd := testenv.CleanCmdEnv(exec.Command(exe, runArg))
cmd.Env = append(cmd.Env, "GODEBUG=asyncpreemptoff=1")
got, err := cmd.CombinedOutput()
if err != nil { if err != nil {
if testenv.Builder() == "linux-amd64-alpine" { if testenv.Builder() == "linux-amd64-alpine" {
// See Issue 18243 and Issue 19938. // See Issue 18243 and Issue 19938.