diff options
author | Austin Clements <austin@google.com> | 2015-05-26 14:32:24 -0400 |
---|---|---|
committer | Austin Clements <austin@google.com> | 2015-05-28 17:40:19 +0000 |
commit | f2c3957ed8b44f29aaf9a1a7ddc5208ae2168dc9 (patch) | |
tree | 2f71aaeaffab4c92b25295ad47aa9fb8130bb789 /src/runtime/proc_test.go | |
parent | f90d802b6102ced82377ddc16f81f299c039ce83 (diff) | |
download | go-f2c3957ed8b44f29aaf9a1a7ddc5208ae2168dc9.tar.gz go-f2c3957ed8b44f29aaf9a1a7ddc5208ae2168dc9.zip |
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>
Diffstat (limited to 'src/runtime/proc_test.go')
-rw-r--r-- | src/runtime/proc_test.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/runtime/proc_test.go b/src/runtime/proc_test.go index 4c5712d32f..4471ee5afb 100644 --- a/src/runtime/proc_test.go +++ b/src/runtime/proc_test.go @@ -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) |