]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/pprof: call runtime.GC twice in memory profile test
authorMichael Anthony Knyszek <mknyszek@google.com>
Fri, 9 Jul 2021 17:34:07 +0000 (17:34 +0000)
committerMichael Knyszek <mknyszek@google.com>
Fri, 9 Jul 2021 18:00:16 +0000 (18:00 +0000)
This change fixes #46500 by working around #45315 which may cause freed
objects to get missed in the heap profile published for the test.

By calling runtime.GC one more time this change ensures that all freed
objects are accounted for.

Fixes #46500.

Change-Id: Iedcd0b37dbaffa688b0ff8631a8b79f7a1169634
Reviewed-on: https://go-review.googlesource.com/c/go/+/333549
Trust: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
src/runtime/pprof/mprof_test.go

index 3ef40d3de7de1c52f0de642257320840a2071f18..b4680fbdee99ecb6c79a32e6e591745ec2664175 100644 (file)
@@ -86,6 +86,17 @@ func TestMemoryProfiler(t *testing.T) {
 
        runtime.GC() // materialize stats
 
+       // TODO(mknyszek): Fix #45315 and remove this extra call.
+       //
+       // Unfortunately, it's possible for the sweep termination condition
+       // to flap, so with just one runtime.GC call, a freed object could be
+       // missed, leading this test to fail. A second call reduces the chance
+       // of this happening to zero, because sweeping actually has to finish
+       // to move on to the next GC, during which nothing will happen.
+       //
+       // See #46500 for more details.
+       runtime.GC()
+
        memoryProfilerRun++
 
        tests := []struct {