Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net/http: data race in tests #4724

Closed
alberts opened this issue Jan 29, 2013 · 4 comments
Closed

net/http: data race in tests #4724

alberts opened this issue Jan 29, 2013 · 4 comments
Milestone

Comments

@alberts
Copy link
Contributor

alberts commented Jan 29, 2013

What steps will reproduce the problem?

GOMAXPROCS=46 go test -race -short net/http

What do you see instead?

==================
WARNING: DATA RACE
Write by goroutine 227:
  net/http.(*persistConn).closeLocked()
      /build/go.tip/go/src/pkg/net/http/transport.go:807 +0xbb
  net/http.(*persistConn).readLoop()
      /build/go.tip/go/src/pkg/net/http/transport.go:571 +0x22e

Previous read by goroutine 178:
  net/http.(*persistConn).roundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:714 +0x61
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:165 +0x4f2
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

Goroutine 227 (running) created at:
  net/http.(*Transport).getConn()
      /build/go.tip/go/src/pkg/net/http/transport.go:410 +0xe40
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:160 +0x485
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

Goroutine 178 (running) created at:
  net/http_test.TestStressSurpriseServerCloses()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:431 +0x47a
  testing.tRunner()
      /build/go.tip/go/src/pkg/testing/testing.go:310 +0xe8

==================
==================
WARNING: DATA RACE
Write by goroutine 269:
  net/http.(*persistConn).closeLocked()
      /build/go.tip/go/src/pkg/net/http/transport.go:807 +0xbb
  net/http.(*persistConn).readLoop()
      /build/go.tip/go/src/pkg/net/http/transport.go:571 +0x22e

Previous read by goroutine 21:
  net/http.(*persistConn).roundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:714 +0x61
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:165 +0x4f2
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a
  schedunlock()
      /build/go.tip/go/src/pkg/runtime/proc.c:280 +0x5f
  fmt.(*fmt).pad()
      /build/go.tip/go/src/pkg/fmt/format.go:113 +0x39c

Goroutine 269 (running) created at:
  net/http.(*Transport).getConn()
      /build/go.tip/go/src/pkg/net/http/transport.go:410 +0xe40
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:160 +0x485
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

Goroutine 21 (running) created at:
  net/http_test.TestStressSurpriseServerCloses()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:431 +0x47a
  testing.tRunner()
      /build/go.tip/go/src/pkg/testing/testing.go:310 +0xe8

==================
==================
WARNING: DATA RACE
Read by goroutine 16:
  net/http.(*persistConn).roundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:714 +0x61
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:165 +0x4f2
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

Previous write by goroutine 34:
  net/http.(*persistConn).closeLocked()
      /build/go.tip/go/src/pkg/net/http/transport.go:807 +0xbb
  net/http.(*persistConn).readLoop()
      /build/go.tip/go/src/pkg/net/http/transport.go:571 +0x22e
  schedunlock()
      /build/go.tip/go/src/pkg/runtime/proc.c:280 +0x5f
  net/textproto.(*Reader).readContinuedLineSlice()
      /build/go.tip/go/src/pkg/net/textproto/reader.go:133 +0x275

Goroutine 16 (running) created at:
  net/http_test.TestStressSurpriseServerCloses()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:431 +0x47a
  testing.tRunner()
      /build/go.tip/go/src/pkg/testing/testing.go:310 +0xe8

Goroutine 34 (running) created at:
  net/http.(*Transport).getConn()
      /build/go.tip/go/src/pkg/net/http/transport.go:410 +0xe40
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:160 +0x485
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

==================
==================
WARNING: DATA RACE
Read by goroutine 143:
  net/http.(*persistConn).roundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:714 +0x61
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:165 +0x4f2
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

Previous write by goroutine 30:
  net/http.(*persistConn).closeLocked()
      /build/go.tip/go/src/pkg/net/http/transport.go:807 +0xbb
  net/http.(*persistConn).readLoop()
      /build/go.tip/go/src/pkg/net/http/transport.go:571 +0x22e
  schedunlock()
      /build/go.tip/go/src/pkg/runtime/proc.c:280 +0x5f
  mime/multipart.(*Reader).isBoundaryDelimiterLine()
      /build/go.tip/go/src/pkg/mime/multipart/multipart.go:290 +0x9e

Goroutine 143 (running) created at:
  net/http_test.TestStressSurpriseServerCloses()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:431 +0x47a
  testing.tRunner()
      /build/go.tip/go/src/pkg/testing/testing.go:310 +0xe8

Goroutine 30 (running) created at:
  net/http.(*Transport).getConn()
      /build/go.tip/go/src/pkg/net/http/transport.go:410 +0xe40
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:160 +0x485
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

==================
==================
WARNING: DATA RACE
Read by goroutine 70:
  net/http.(*persistConn).roundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:714 +0x61
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:165 +0x4f2
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

Previous write by goroutine 251:
  net/http.(*persistConn).closeLocked()
      /build/go.tip/go/src/pkg/net/http/transport.go:807 +0xbb
  net/http.(*persistConn).readLoop()
      /build/go.tip/go/src/pkg/net/http/transport.go:571 +0x22e
  schedunlock()
      /build/go.tip/go/src/pkg/runtime/proc.c:280 +0x5f
  fmt.(*fmt).padString()
      /build/go.tip/go/src/pkg/fmt/format.go:129 +0x2dc

Goroutine 70 (running) created at:
  net/http_test.TestStressSurpriseServerCloses()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:431 +0x47a
  testing.tRunner()
      /build/go.tip/go/src/pkg/testing/testing.go:310 +0xe8

Goroutine 251 (running) created at:
  net/http.(*Transport).getConn()
      /build/go.tip/go/src/pkg/net/http/transport.go:410 +0xe40
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:160 +0x485
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

==================
==================
WARNING: DATA RACE
Read by goroutine 109:
  net/http.(*persistConn).roundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:714 +0x61
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:165 +0x4f2
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

Previous write by goroutine 56:
  net/http.(*persistConn).closeLocked()
      /build/go.tip/go/src/pkg/net/http/transport.go:807 +0xbb
  net/http.(*persistConn).readLoop()
      /build/go.tip/go/src/pkg/net/http/transport.go:571 +0x22e
  schedunlock()
      /build/go.tip/go/src/pkg/runtime/proc.c:280 +0x5f
  fmt.(*pp).doPrintf()
      /build/go.tip/go/src/pkg/fmt/print.go:1028 +0x17b

Goroutine 109 (running) created at:
  net/http_test.TestStressSurpriseServerCloses()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:431 +0x47a
  testing.tRunner()
      /build/go.tip/go/src/pkg/testing/testing.go:310 +0xe8

Goroutine 56 (running) created at:
  net/http.(*Transport).getConn()
      /build/go.tip/go/src/pkg/net/http/transport.go:410 +0xe40
  net/http.(*Transport).RoundTrip()
      /build/go.tip/go/src/pkg/net/http/transport.go:160 +0x485
  net/http.send()
      /build/go.tip/go/src/pkg/net/http/client.go:162 +0x4ea
  net/http.(*Client).send()
      /build/go.tip/go/src/pkg/net/http/client.go:96 +0x16b
  net/http.(*Client).doFollowingRedirects()
      /build/go.tip/go/src/pkg/net/http/client.go:278 +0x872
  net/http.(*Client).Get()
      /build/go.tip/go/src/pkg/net/http/client.go:232 +0xd5
  net/http_test.func·095()
      /build/go.tip/go/src/pkg/net/http/transport_test.go:419 +0x8a

==================
PASS
Found 6 data race(s)
FAIL    net/http    116.549s

Which compiler are you using (5g, 6g, 8g, gccgo)?

6g

Which operating system are you using?

linux

Which version are you using?  (run 'go version')

tip
@alberts
Copy link
Contributor Author

alberts commented Jan 30, 2013

Comment 1:

This is actually without -short. The offending test is TestStressSurpriseServerCloses.

@rsc
Copy link
Contributor

rsc commented Jan 30, 2013

Comment 2:

Labels changed: added priority-later, removed priority-triage.

Owner changed to @bradfitz.

Status changed to Accepted.

@bradfitz
Copy link
Contributor

Comment 3:

This issue was closed by revision 1aa56a2.

Status changed to Fixed.

@dvyukov
Copy link
Member

dvyukov commented Jan 31, 2013

Comment 4:

Labels changed: added threadsanitizer.

@rsc rsc added this to the Go1.1 milestone Apr 14, 2015
@rsc rsc removed the go1.1 label Apr 14, 2015
@golang golang locked and limited conversation to collaborators Jun 24, 2016
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants