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

go/printer: data race #4540

Closed
alberts opened this issue Dec 13, 2012 · 2 comments
Closed

go/printer: data race #4540

alberts opened this issue Dec 13, 2012 · 2 comments
Milestone

Comments

@alberts
Copy link
Contributor

alberts commented Dec 13, 2012

What steps will reproduce the problem?

run tests

What do you see instead?

WARNING: DATA RACE
Read by goroutine 17:
  go/token.(*FileSet).file()
      /build/go.tip/go/src/pkg/go/token/position.go:371 +0x38
  go/token.(*FileSet).Position()
      /build/go.tip/go/src/pkg/go/token/position.go:403 +0x70
  go/printer.(*printer).posFor()
      /build/go.tip/go/src/pkg/go/printer/printer.go:142 +0x58
  go/printer.(*printer).print()
      /build/go.tip/go/src/pkg/go/printer/printer.go:894 +0xa70
  go/printer.(*printer).expr1()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:805 +0x1564
  go/printer.(*printer).expr0()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:878 +0x59
  go/printer.(*printer).exprList()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:243 +0x10b7
  go/printer.(*printer).stmt()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:1083 +0x2593
  go/printer.(*printer).stmtList()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:908 +0x29c
  go/printer.(*printer).block()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:921 +0x132
  go/printer.(*printer).adjBlock()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:1483 +0x692
  go/printer.(*printer).funcDecl()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:1507 +0x38d
  go/printer.(*printer).decl()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:1517 +0xb2
  go/printer.(*printer).declList()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:1558 +0x1c5
  go/printer.(*printer).file()
      /build/go.tip/go/src/pkg/go/printer/nodes.go:1566 +0x1ef
  go/printer.(*printer).printNode()
      /build/go.tip/go/src/pkg/go/printer/printer.go:1057 +0x8f8
  go/printer.(*Config).fprint()
      /build/go.tip/go/src/pkg/go/printer/printer.go:1196 +0xbe
  go/printer.(*Config).Fprint()
      /build/go.tip/go/src/pkg/go/printer/printer.go:1254 +0x89
  go/printer.format()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:62 +0x3fc
  go/printer.runcheck()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:154 +0x6e7
  go/printer.func·005()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:172 +0x99

Previous write by goroutine 19:
  go/token.(*FileSet).file()
      /build/go.tip/go/src/pkg/go/token/position.go:379 +0x17b
  go/token.(*FileSet).Position()
      /build/go.tip/go/src/pkg/go/token/position.go:403 +0x70
  go/printer.(*printer).posFor()
      /build/go.tip/go/src/pkg/go/printer/printer.go:142 +0x58
  go/printer.(*printer).nextComment()
      /build/go.tip/go/src/pkg/go/printer/printer.go:121 +0x246
  go/printer.(*printer).printNode()
      /build/go.tip/go/src/pkg/go/printer/printer.go:1028 +0x4c0
  go/printer.(*Config).fprint()
      /build/go.tip/go/src/pkg/go/printer/printer.go:1196 +0xbe
  go/printer.(*Config).Fprint()
      /build/go.tip/go/src/pkg/go/printer/printer.go:1254 +0x89
  go/printer.format()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:62 +0x3fc
  go/printer.runcheck()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:123 +0x19e
  go/printer.func·005()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:172 +0x99

Goroutine 17 (running) created at:
  go/printer.check()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:174 +0x1a2
  go/printer.TestFiles()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:209 +0x294
  testing.tRunner()
      /build/go.tip/go/src/pkg/testing/testing.go:301 +0xe8

Goroutine 19 (running) created at:
  go/printer.check()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:174 +0x1a2
  go/printer.TestFiles()
      /build/go.tip/go/src/pkg/go/printer/printer_test.go:209 +0x294
  testing.tRunner()
      /build/go.tip/go/src/pkg/testing/testing.go:301 +0xe8

==================
--- FAIL: TestFiles-123 (30.73 seconds)
printer_test.go:180:    testdata/expressions.input: running too slowly
printer_test.go:180:    testdata/expressions.input: running too slowly
FAIL
FAIL    go/printer  68.221s

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')

3fe40a41018d
@dvyukov
Copy link
Member

dvyukov commented Dec 13, 2012

Comment 1:

Status changed to Duplicate.

Merged into issue #4345.

@davecheney
Copy link
Contributor

Comment 2:

The race occurs when the the test takes longer than 10 seconds, so the fixture is marked
as a failure and starts the next one, which increases the likely hood of a data race on
the FileSet cache.
Reducing the timeout to 1 second and running `go test -race -cpu=4` triggers the race
almost immediately.

@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