Skip to content

x/net/http2: data race in TestCanonicalHeaderCacheGrowth #57218

@bcmills

Description

@bcmills
#!watchflakes
post <- pkg == "x/net/http2" && test == "TestCanonicalHeaderCacheGrowth" && `DATA RACE`

https://build.golang.org/log/9f76836a9c3da1bd2d60e0e4b5274e6d253febaa:

==================
WARNING: DATA RACE
Write at 0x000001a1e0cc by goroutine 67:
  golang.org/x/net/http2.disableGoroutineTracking()
      C:/workdir/gopath/src/golang.org/x/net/http2/server_test.go:3502 +0x64
  golang.org/x/net/http2.TestCanonicalHeaderCacheGrowth()
      C:/workdir/gopath/src/golang.org/x/net/http2/server_test.go:4550 +0x9b
  testing.tRunner()
      C:/workdir/go/src/testing/testing.go:1439 +0x213
  testing.(*T).Run.func1()
      C:/workdir/go/src/testing/testing.go:1486 +0x47

Previous read at 0x000001a1e0cc by goroutine 248:
  golang.org/x/net/http2.goroutineLock.checkNotOn()
      C:/workdir/gopath/src/golang.org/x/net/http2/gotrack.go:41 +0xaa
  golang.org/x/net/http2.(*serverConn).writeFrameFromHandler()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:1134 +0x75
  golang.org/x/net/http2.(*serverConn).writeHeaders()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2331 +0x116
  golang.org/x/net/http2.(*responseWriterState).writeChunk()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2617 +0x10f2
  golang.org/x/net/http2.chunkWriter.Write()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2520 +0xb5
  golang.org/x/net/http2.(*responseWriter).FlushError()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2790 +0xbb
  golang.org/x/net/http2.(*responseWriter).Flush()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2774 +0x78
  golang.org/x/net/http2.(*responseWriter).handlerDone()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2952 +0x6e
  golang.org/x/net/http2.(*serverConn).runHandler.func1()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2303 +0x3de
  runtime.deferreturn()
      C:/workdir/go/src/runtime/panic.go:436 +0x32
  golang.org/x/net/http2.(*serverConn).processHeaders.func1()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2018 +0x64

Goroutine 67 (running) created at:
  testing.(*T).Run()
      C:/workdir/go/src/testing/testing.go:1486 +0x724
  testing.runTests.func1()
      C:/workdir/go/src/testing/testing.go:1839 +0x99
  testing.tRunner()
      C:/workdir/go/src/testing/testing.go:1439 +0x213
  testing.runTests()
      C:/workdir/go/src/testing/testing.go:1837 +0x7e4
  testing.(*M).Run()
      C:/workdir/go/src/testing/testing.go:1719 +0xa71
  main.main()
      _testmain.go:767 +0x2e4

Goroutine 248 (finished) created at:
  golang.org/x/net/http2.(*serverConn).processHeaders()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:2018 +0xd39
  golang.org/x/net/http2.(*serverConn).processFrame()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:1518 +0x635
  golang.org/x/net/http2.(*serverConn).processFrameFromReader()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:1461 +0x2ed
  golang.org/x/net/http2.(*serverConn).serve()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:952 +0x15ea
  golang.org/x/net/http2.(*Server).ServeConn()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:531 +0x1771
  golang.org/x/net/http2.ConfigureServer.func1()
      C:/workdir/gopath/src/golang.org/x/net/http2/server.go:321 +0x124
  net/http.(*conn).serve()
      C:/workdir/go/src/net/http/server.go:1874 +0x1c56
  net/http.(*Server).Serve.func3()
      C:/workdir/go/src/net/http/server.go:3071 +0x58
==================
--- FAIL: TestCanonicalHeaderCacheGrowth (86.60s)
    testing.go:1312: race detected during execution of test
FAIL
FAIL	golang.org/x/net/http2	111.467s

Metadata

Metadata

Assignees

Labels

FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.TestingAn issue that has been verified to require only test changes, not just a test failure.

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions