aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/pprof
diff options
context:
space:
mode:
authorRhys Hiltner <rhys@justin.tv>2022-05-16 09:47:08 -0700
committerRhys Hiltner <rhys@justin.tv>2022-05-16 18:30:07 +0000
commit6ec46f470797ad816c3a5b20eece0995f13d2bc4 (patch)
tree1911e03b184903e63b236276464d104661fa2697 /src/runtime/pprof
parentab8d7dd75ea4918cde5e71b4482ff5b4f0f69273 (diff)
downloadgo-6ec46f470797ad816c3a5b20eece0995f13d2bc4.tar.xz
runtime/pprof: slow new goroutine launches in test
The goroutine profiler tests include one that launches a steady stream of goroutines. That creates a scheduler busy loop that can prevent forward progress in the rest of the program. Slow down the launches a bit so other goroutines have a chance to run. Fixes #52916 For #52934 Change-Id: I748557201b94918b1fa4960544a51a48d9cacc6b Reviewed-on: https://go-review.googlesource.com/c/go/+/406654 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Bryan Mills <bcmills@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com>
Diffstat (limited to 'src/runtime/pprof')
-rw-r--r--src/runtime/pprof/pprof_test.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/runtime/pprof/pprof_test.go b/src/runtime/pprof/pprof_test.go
index faefd857f0..aabc180de3 100644
--- a/src/runtime/pprof/pprof_test.go
+++ b/src/runtime/pprof/pprof_test.go
@@ -1527,6 +1527,10 @@ func TestGoroutineProfileConcurrency(t *testing.T) {
SetGoroutineLabels(WithLabels(ctx, Labels(t.Name()+"-churn-i", fmt.Sprint(i))))
if i == 0 {
ready.Done()
+ } else if i%16 == 0 {
+ // Yield on occasion so this sequence of goroutine launches
+ // doesn't monopolize a P. See issue #52934.
+ runtime.Gosched()
}
if ctx.Err() == nil {
go churn(i + 1)