mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: disable GC around TestGoroutineParallelism
TestGoroutineParallelism can deadlock if the GC runs during the test. Currently it tries to prevent this by forcing a GC before the test, but this is best effort and fails completely if GOGC is very low for testing. This change replaces this best-effort fix with simply setting GOGC to off for the duration of the test. Change-Id: I8229310833f241b149ebcd32845870c1cb14e9f8 Reviewed-on: https://go-review.googlesource.com/10454 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
f90d802b61
commit
f2c3957ed8
1 changed files with 3 additions and 2 deletions
|
|
@ -7,6 +7,7 @@ package runtime_test
|
|||
import (
|
||||
"math"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"syscall"
|
||||
|
|
@ -104,8 +105,8 @@ func TestGoroutineParallelism(t *testing.T) {
|
|||
defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(P))
|
||||
// If runtime triggers a forced GC during this test then it will deadlock,
|
||||
// since the goroutines can't be stopped/preempted.
|
||||
// So give this test as much time as possible.
|
||||
runtime.GC()
|
||||
// Disable GC for this test (see issue #10958).
|
||||
defer debug.SetGCPercent(debug.SetGCPercent(-1))
|
||||
for try := 0; try < N; try++ {
|
||||
done := make(chan bool)
|
||||
x := uint32(0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue