]> Cypherpunks repositories - gostls13.git/commitdiff
net: fix data race in TestClosingListener
authorDaniel Martí <mvdan@mvdan.cc>
Thu, 12 Oct 2017 10:57:36 +0000 (11:57 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 13 Oct 2017 15:19:59 +0000 (15:19 +0000)
In https://golang.org/cl/66334, the test was changed so that the second
Listen would also be closed. However, it shouldn't have reused the same
ln variable, as that can lead to a data race with the background loop
that accepts connections.

Simply define a new Listener, since we don't need to overwrite the first
variable.

I was able to reproduce the data race report locally about 10% of the
time by reducing the sleep from a millisecond to a nanosecond. After the
fix, it's entirely gone after 1000 runs.

Fixes #22226.

Change-Id: I7c639f9f2ee5098eac951a45f42f97758654eacd
Reviewed-on: https://go-review.googlesource.com/70230
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/listen_test.go

index c15b6bdc8f955623bbbaccead09dc83e6163cb4d..96624f98ce53fde50ea55f6327d614548ad97030 100644 (file)
@@ -723,9 +723,9 @@ func TestClosingListener(t *testing.T) {
 
        ln.Close()
 
-       ln, err = Listen("tcp", addr.String())
+       ln2, err := Listen("tcp", addr.String())
        if err != nil {
                t.Fatal(err)
        }
-       ln.Close()
+       ln2.Close()
 }