Skip to content

Data race #4

@oxtoacart

Description

@oxtoacart
➜  ipproxy git:(ox/lockingcleanup) sudo -E go test -race
DEBUG ipproxy: ipproxy_test.go:152 Loop 0
DEBUG ipproxy: ipproxy_test.go:154 UDP dialing echo server at: 10.0.0.3:54777
DEBUG ipproxy: ipproxy_test.go:245 Got UDP packet! Addr: 127.0.0.1:50947
DEBUG ipproxy: ipproxy_test.go:173 TCP dialing echo server at: 10.0.0.3:54777
DEBUG ipproxy: ipproxy_test.go:216 Copying TCP
DEBUG ipproxy: ipproxy_test.go:219 Finished copying TCP: 8: <nil>
DEBUG ipproxy: ipproxy_test.go:42 checking
==================
WARNING: DATA RACE
Write at 0x00c000242600 by goroutine 40:
  runtime.mapdelete_fast32()
      /usr/local/go/src/runtime/map_fast32.go:272 +0x0
  github.com/google/netstack/tcpip/stack.(*Stack).Close()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/stack/stack.go:1055 +0x27d
  github.com/getlantern/ipproxy.newOrigin.func1()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/base.go:220 +0x64
  github.com/getlantern/ipproxy.newBaseConn.func1()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/base.go:57 +0x180
  github.com/getlantern/ipproxy.(*closeable).Close.func1()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/closeable.go:23 +0x191
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:44 +0xde
  github.com/getlantern/ipproxy.(*closeable).Close()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/closeable.go:19 +0x79
  github.com/getlantern/ipproxy.(*closeable).closeNow.func1()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/closeable.go:36 +0x79
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:44 +0xde
  github.com/getlantern/ipproxy.(*closeable).closeNow()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/closeable.go:34 +0x79

Previous read at 0x00c000242600 by goroutine 34:
  runtime.mapaccess1_fast32()
      /usr/local/go/src/runtime/map_fast32.go:12 +0x0
  github.com/google/netstack/tcpip/stack.(*Stack).UnregisterTransportEndpoint()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/stack/stack.go:933 +0xde
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).cleanupLocked()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/endpoint.go:465 +0x6fc
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).protocolMainLoop.func1()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/connect.go:710 +0x173
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).protocolMainLoop()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/connect.go:1045 +0xb09

Goroutine 40 (running) created at:
  github.com/getlantern/ipproxy.(*proxy).reapTCP()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/tcp.go:158 +0x5b3
  github.com/getlantern/ipproxy.(*proxy).copyToUpstream()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/ipproxy.go:247 +0x6cf

Goroutine 34 (finished) created at:
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).startAcceptedLoop()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/endpoint.go:1309 +0x9c
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).Accept()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/endpoint.go:1333 +0x163
  github.com/getlantern/ipproxy.acceptTCP()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/tcp.go:64 +0xcf
==================
==================
WARNING: DATA RACE
Write at 0x00c0002763d8 by goroutine 40:
  github.com/google/netstack/tcpip/stack.(*Stack).Close()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/stack/stack.go:1063 +0x489
  github.com/getlantern/ipproxy.newOrigin.func1()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/base.go:220 +0x64
  github.com/getlantern/ipproxy.newBaseConn.func1()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/base.go:57 +0x180
  github.com/getlantern/ipproxy.(*closeable).Close.func1()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/closeable.go:23 +0x191
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:44 +0xde
  github.com/getlantern/ipproxy.(*closeable).Close()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/closeable.go:19 +0x79
  github.com/getlantern/ipproxy.(*closeable).closeNow.func1()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/closeable.go:36 +0x79
  sync.(*Once).Do()
      /usr/local/go/src/sync/once.go:44 +0xde
  github.com/getlantern/ipproxy.(*closeable).closeNow()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/closeable.go:34 +0x79

Previous read at 0x00c0002763d8 by goroutine 34:
  github.com/google/netstack/tcpip/stack.(*Stack).UnregisterTransportEndpoint()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/stack/stack.go:933 +0xaf
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).cleanupLocked()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/endpoint.go:465 +0x6fc
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).protocolMainLoop.func1()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/connect.go:710 +0x173
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).protocolMainLoop()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/connect.go:1045 +0xb09

Goroutine 40 (running) created at:
  github.com/getlantern/ipproxy.(*proxy).reapTCP()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/tcp.go:158 +0x5b3
  github.com/getlantern/ipproxy.(*proxy).copyToUpstream()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/ipproxy.go:247 +0x6cf

Goroutine 34 (finished) created at:
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).startAcceptedLoop()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/endpoint.go:1309 +0x9c
  github.com/google/netstack/tcpip/transport/tcp.(*endpoint).Accept()
      /Volumes/external/gocode/src/github.com/google/netstack/tcpip/transport/tcp/endpoint.go:1333 +0x163
  github.com/getlantern/ipproxy.acceptTCP()
      /Volumes/external/gocode/src/github.com/getlantern/ipproxy/tcp.go:64 +0xcf
==================

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions