]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: fix racy setting of gc's Config.Race
authorDaniel Martí <mvdan@mvdan.cc>
Tue, 21 Aug 2018 09:26:45 +0000 (10:26 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Tue, 21 Aug 2018 12:29:21 +0000 (12:29 +0000)
commitc1807989563e0bafc14c56dba3eb405a099f4495
treec26e2022269a053fda322d5bb66463faed927c7d
parent30d3ebe36701b16678a51144eb3c5e958f382bd7
cmd/compile: fix racy setting of gc's Config.Race

ssaConfig.Race was being set by many goroutines concurrently, resulting
in a data race seen below. This was very likely introduced by CL 121235.

WARNING: DATA RACE
Write at 0x00c000344408 by goroutine 12:
  cmd/compile/internal/gc.buildssa()
      /workdir/go/src/cmd/compile/internal/gc/ssa.go:134 +0x7a8
  cmd/compile/internal/gc.compileSSA()
      /workdir/go/src/cmd/compile/internal/gc/pgen.go:259 +0x5d
  cmd/compile/internal/gc.compileFunctions.func2()
      /workdir/go/src/cmd/compile/internal/gc/pgen.go:323 +0x5a

Previous write at 0x00c000344408 by goroutine 11:
  cmd/compile/internal/gc.buildssa()
      /workdir/go/src/cmd/compile/internal/gc/ssa.go:134 +0x7a8
  cmd/compile/internal/gc.compileSSA()
      /workdir/go/src/cmd/compile/internal/gc/pgen.go:259 +0x5d
  cmd/compile/internal/gc.compileFunctions.func2()
      /workdir/go/src/cmd/compile/internal/gc/pgen.go:323 +0x5a

Goroutine 12 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /workdir/go/src/cmd/compile/internal/gc/pgen.go:321 +0x39b
  cmd/compile/internal/gc.Main()
      /workdir/go/src/cmd/compile/internal/gc/main.go:651 +0x437d
  main.main()
      /workdir/go/src/cmd/compile/main.go:51 +0x100

Goroutine 11 (running) created at:
  cmd/compile/internal/gc.compileFunctions()
      /workdir/go/src/cmd/compile/internal/gc/pgen.go:321 +0x39b
  cmd/compile/internal/gc.Main()
      /workdir/go/src/cmd/compile/internal/gc/main.go:651 +0x437d
  main.main()
      /workdir/go/src/cmd/compile/main.go:51 +0x100

Instead, set up the field exactly once as part of initssaconfig.

Change-Id: I2c30c6b1cf92b8fd98e7cb5c2e10c526467d0b0a
Reviewed-on: https://go-review.googlesource.com/130375
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dave Cheney <dave@cheney.net>
src/cmd/compile/internal/gc/ssa.go