]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: "fix" non-preemptible loop in TestParallelRWMutexReaders
authorAustin Clements <austin@google.com>
Wed, 25 Oct 2017 22:36:12 +0000 (18:36 -0400)
committerAustin Clements <austin@google.com>
Thu, 26 Oct 2017 20:38:48 +0000 (20:38 +0000)
TestParallelRWMutexReaders has a non-preemptible loop in it that can
deadlock if GC triggers. "Fix" it like we've fixed similar tests.

Updates #10958.

Change-Id: I13618f522f5ef0c864e7171ad2f655edececacd7
Reviewed-on: https://go-review.googlesource.com/73710
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/rwmutex_test.go

index a69eca1511f324fb4b933d65b4473b1cb7478ade..872b3b098e866b2db4a390b992ea3f6e4224594b 100644 (file)
@@ -12,6 +12,7 @@ package runtime_test
 import (
        "fmt"
        . "runtime"
+       "runtime/debug"
        "sync/atomic"
        "testing"
 )
@@ -47,6 +48,10 @@ func doTestParallelReaders(numReaders int) {
 
 func TestParallelRWMutexReaders(t *testing.T) {
        defer GOMAXPROCS(GOMAXPROCS(-1))
+       // If runtime triggers a forced GC during this test then it will deadlock,
+       // since the goroutines can't be stopped/preempted.
+       // Disable GC for this test (see issue #10958).
+       defer debug.SetGCPercent(debug.SetGCPercent(-1))
        doTestParallelReaders(1)
        doTestParallelReaders(3)
        doTestParallelReaders(4)