aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/testdata
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2021-11-12 11:16:43 -0500
committerMichael Pratt <mpratt@google.com>2021-11-12 19:45:58 +0000
commitecd2e140ec54feca9afbda7726345e09cd380eea (patch)
tree401f8731df6d42cf106fd9eb2c33fd1baa4a2f68 /src/runtime/testdata
parentb1b6d928bd4fb368f8ada0a554fc85405e7a3688 (diff)
downloadgo-ecd2e140ec54feca9afbda7726345e09cd380eea.tar.xz
runtime: drop cgoTraceback call assumptions from CgoPprof tests
the CgoPprof tests currently assume that calls to their cgoTraceback functions are primarily for generating pprof samples and exit early after receiving two calls. This is a fragile assumption, as cgoTraceback will be called for _any_ signal received, hence why the test already looks for 2 calls instead of 1. Still, this has caused flaky failures in two cases: * #37201, where async preemption signals add additional probability of receiving non-profiling signals. This was resolved by disabling async preemption. * #49401, where some ITIMER_PROF SIGPROF signals are ignored in favor of per-thread SIGPROF signals. Rather than attempting to keep plugging holes, this CL drops the fragile assumption from these tests. Now they simply unconditionally run for the full 1s before exiting. Fixes #49401 Change-Id: I16dc9d2f16c2fb511e9db93dd096a402121f86ac Reviewed-on: https://go-review.googlesource.com/c/go/+/363634 Trust: Michael Pratt <mpratt@google.com> Run-TryBot: Michael Pratt <mpratt@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Rhys Hiltner <rhys@justin.tv>
Diffstat (limited to 'src/runtime/testdata')
-rw-r--r--src/runtime/testdata/testprogcgo/pprof.go11
-rw-r--r--src/runtime/testdata/testprogcgo/threadpprof.go14
2 files changed, 2 insertions, 23 deletions
diff --git a/src/runtime/testdata/testprogcgo/pprof.go b/src/runtime/testdata/testprogcgo/pprof.go
index 3b73fa0bdd..8870d0c415 100644
--- a/src/runtime/testdata/testprogcgo/pprof.go
+++ b/src/runtime/testdata/testprogcgo/pprof.go
@@ -29,8 +29,6 @@ void cpuHog() {
void cpuHog2() {
}
-static int cpuHogCount;
-
struct cgoTracebackArg {
uintptr_t context;
uintptr_t sigContext;
@@ -47,13 +45,6 @@ void pprofCgoTraceback(void* parg) {
arg->buf[0] = (uintptr_t)(cpuHog) + 0x10;
arg->buf[1] = (uintptr_t)(cpuHog2) + 0x4;
arg->buf[2] = 0;
- ++cpuHogCount;
-}
-
-// getCpuHogCount fetches the number of times we've seen cpuHog in the
-// traceback.
-int getCpuHogCount() {
- return cpuHogCount;
}
*/
import "C"
@@ -86,7 +77,7 @@ func CgoPprof() {
}
t0 := time.Now()
- for C.getCpuHogCount() < 2 && time.Since(t0) < time.Second {
+ for time.Since(t0) < time.Second {
C.cpuHog()
}
diff --git a/src/runtime/testdata/testprogcgo/threadpprof.go b/src/runtime/testdata/testprogcgo/threadpprof.go
index feb774ba59..4bc84d16d0 100644
--- a/src/runtime/testdata/testprogcgo/threadpprof.go
+++ b/src/runtime/testdata/testprogcgo/threadpprof.go
@@ -33,8 +33,6 @@ void cpuHogThread() {
void cpuHogThread2() {
}
-static int cpuHogThreadCount;
-
struct cgoTracebackArg {
uintptr_t context;
uintptr_t sigContext;
@@ -49,13 +47,6 @@ void pprofCgoThreadTraceback(void* parg) {
arg->buf[0] = (uintptr_t)(cpuHogThread) + 0x10;
arg->buf[1] = (uintptr_t)(cpuHogThread2) + 0x4;
arg->buf[2] = 0;
- __sync_add_and_fetch(&cpuHogThreadCount, 1);
-}
-
-// getCPUHogThreadCount fetches the number of times we've seen cpuHogThread
-// in the traceback.
-int getCPUHogThreadCount() {
- return __sync_add_and_fetch(&cpuHogThreadCount, 0);
}
static void* cpuHogDriver(void* arg __attribute__ ((unused))) {
@@ -109,10 +100,7 @@ func pprofThread() {
C.runCPUHogThread()
- t0 := time.Now()
- for C.getCPUHogThreadCount() < 2 && time.Since(t0) < time.Second {
- time.Sleep(100 * time.Millisecond)
- }
+ time.Sleep(1*time.Second)
pprof.StopCPUProfile()