aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2016-01-05 11:33:25 -0500
committerAustin Clements <austin@google.com>2016-01-05 18:48:19 +0000
commit59ca8789fb7de9e7e20bbf895b388c7e9b29d2f7 (patch)
treee050ddf0c9530243d57db825860ef1d16a32dbcb /src
parent2c67c8c3038ec7dddecb6c1b29f0610f3262134d (diff)
downloadgo-59ca8789fb7de9e7e20bbf895b388c7e9b29d2f7.tar.xz
runtime/pprof: skip TestStackBarrierProfiling
This test triggers a large number of usleep(100)s. linux/arm, openbsd, and solaris have very poor timer resolution on the builders, so usleep(100) actually gives up the whole scheduling quantum. On Linux and OpenBSD (and probably Solaris), profiling signals are only generated when a process completes a whole scheduling quantum, so this test often gets zero profiling signals and fails. Until we figure out what to do about this, skip this test on these platforms. Updates #13405. Change-Id: Ica94e4a8ae7a8df3e5a840504f83ee2ec08727df Reviewed-on: https://go-review.googlesource.com/18252 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Austin Clements <austin@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/runtime/pprof/pprof_test.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/runtime/pprof/pprof_test.go b/src/runtime/pprof/pprof_test.go
index b87e47eb2f..d207464ad1 100644
--- a/src/runtime/pprof/pprof_test.go
+++ b/src/runtime/pprof/pprof_test.go
@@ -333,6 +333,19 @@ func TestMathBigDivide(t *testing.T) {
}
func TestStackBarrierProfiling(t *testing.T) {
+ if (runtime.GOOS == "linux" && runtime.GOARCH == "arm") || runtime.GOOS == "openbsd" || runtime.GOOS == "solaris" {
+ // This test currently triggers a large number of
+ // usleep(100)s. These kernels/arches have poor
+ // resolution timers, so this gives up a whole
+ // scheduling quantum. On Linux and OpenBSD (and
+ // probably Solaris), profiling signals are only
+ // generated when a process completes a whole
+ // scheduling quantum, so this test often gets zero
+ // profiling signals and fails.
+ t.Skipf("low resolution timers inhibit profiling signals (golang.org/issue/13405)")
+ return
+ }
+
if !strings.Contains(os.Getenv("GODEBUG"), "gcstackbarrierall=1") {
// Re-execute this test with constant GC and stack
// barriers at every frame.