]> Cypherpunks repositories - gostls13.git/commitdiff
net: fix data race in TestSocket{Conn,PacketConn}
authorMikio Hara <mikioh.mikioh@gmail.com>
Mon, 18 May 2015 08:27:33 +0000 (17:27 +0900)
committerMikio Hara <mikioh.mikioh@gmail.com>
Wed, 20 May 2015 07:24:09 +0000 (07:24 +0000)
Fixes #10891.

Change-Id: Ie432c9c5520ac29cea8fe6452628ec467567eea5
Reviewed-on: https://go-review.googlesource.com/10194
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/file_bsd_test.go
src/net/file_linux_test.go

index 6e6cf126ad9c66daeb2ee0dce8b7ec1bc36f68fb..ffe3c612b454b676fb351e22e8572ec7eaf9ad8e 100644 (file)
@@ -49,8 +49,11 @@ func TestSocketConn(t *testing.T) {
        defer c.Close()
 
        const N = 3
+       var wg sync.WaitGroup
+       wg.Add(2 * N)
        for i := 0; i < N; i++ {
                go func(i int) {
+                       defer wg.Done()
                        l := syscall.SizeofRtMsghdr + syscall.SizeofSockaddrInet4
                        if freebsd32o64 {
                                l += syscall.SizeofRtMetrics // see syscall/route_freebsd_32bit.go
@@ -73,8 +76,6 @@ func TestSocketConn(t *testing.T) {
                        }
                }(i + 1)
        }
-       var wg sync.WaitGroup
-       wg.Add(N)
        for i := 0; i < N; i++ {
                go func() {
                        defer wg.Done()
index 58f74d2cc5b6328839e6346df2c99a11b76b17ec..e04fea38f65681a64d92dc36eabd57adc0063dbb 100644 (file)
@@ -59,9 +59,12 @@ func TestSocketPacketConn(t *testing.T) {
        defer c.Close()
 
        const N = 3
+       var wg sync.WaitGroup
+       wg.Add(2 * N)
        dst := &netlinkAddr{PID: 0}
        for i := 0; i < N; i++ {
                go func() {
+                       defer wg.Done()
                        l := syscall.NLMSG_HDRLEN + syscall.SizeofRtGenmsg
                        b := make([]byte, l)
                        *(*uint32)(unsafe.Pointer(&b[0:4][0])) = uint32(l)
@@ -76,8 +79,6 @@ func TestSocketPacketConn(t *testing.T) {
                        }
                }()
        }
-       var wg sync.WaitGroup
-       wg.Add(N)
        for i := 0; i < N; i++ {
                go func() {
                        defer wg.Done()