]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/pprof: slow new goroutine launches in test
authorRhys Hiltner <rhys@justin.tv>
Mon, 16 May 2022 16:47:08 +0000 (09:47 -0700)
committerRhys Hiltner <rhys@justin.tv>
Mon, 16 May 2022 18:30:07 +0000 (18:30 +0000)
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>
src/runtime/pprof/pprof_test.go

index faefd857f0f605627956cabd4d5997c07a5de377..aabc180de3fd17b8b9f059b8494df2911a277fd6 100644 (file)
@@ -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)