Skip to content

Commit

Permalink
runtime: disable GC around TestGoroutineParallelism
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
aclements committed May 28, 2015
1 parent f90d802 commit f2c3957
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/runtime/proc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package runtime_test
import (
"math"
"runtime"
"runtime/debug"
"sync"
"sync/atomic"
"syscall"
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit f2c3957

Please sign in to comment.