runtime: deflake TestGCTestIsReachable

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>
This commit is contained in:
Austin Clements 2021-04-06 14:55:46 -04:00
parent 1271e9a9cc
commit bcc4422ee1

View 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 {