]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: deflake TestGCTestIsReachable
authorAustin Clements <austin@google.com>
Tue, 6 Apr 2021 18:55:46 +0000 (14:55 -0400)
committerAustin Clements <austin@google.com>
Tue, 6 Apr 2021 19:55:44 +0000 (19:55 +0000)
This is a simple workaround for a bug where runtime.GC() can return
before finishing a full sweep, causing gcTestIsReachable to throw. The
right thing is to fix runtime.GC(), but this should get this test
passing reliably in the meantime.

Updates #45315.

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

src/runtime/mgc.go

index 4c165ddcdbeebdf0f3cd778fedfb3a350112d128..ef3436d1f4e442fa782978dfcfb7822685dc313f 100644 (file)
@@ -2391,6 +2391,11 @@ func gcTestIsReachable(ptrs ...unsafe.Pointer) (mask uint64) {
        // Force a full GC and sweep.
        GC()
 
+       // TODO(austin): Work around issue #45315. One GC() can return
+       // without finishing the sweep. Do a second to force the sweep
+       // through.
+       GC()
+
        // Process specials.
        for i, s := range specials {
                if !s.done {