go/src/cmd
Daniel Martí c180798956 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>
2018-08-21 12:29:21 +00:00
..
addr2line
api cmd/api: don’t rely on hardcoded go versions 2017-12-11 22:28:37 +00:00
asm cmd/internal/obj/arm64: add register indexed FMOVS/FMOVD 2018-08-20 15:15:16 +00:00
buildid cmd/buildid: fix rewrite algorithm 2018-01-04 16:56:51 +00:00
cgo cmd/cgo: don't give inconsistent typedef error for cgo-defined types 2018-08-01 20:41:19 +00:00
compile cmd/compile: fix racy setting of gc's Config.Race 2018-08-21 12:29:21 +00:00
cover cmd/cover: remove unused global var and the unquote function 2018-08-20 14:10:05 +00:00
dist cmd/compile: only support -race and -msan where they work 2018-08-21 03:38:27 +00:00
doc cmd/doc: adapt directory search for modules 2018-08-01 00:35:28 +00:00
fix all: restore changes from faulty merge/revert 2018-02-12 20:13:59 +00:00
go cmd/go: fix 'go vet -h' to print the right text 2018-08-21 07:36:54 +00:00
gofmt
internal cmd/compile: only support -race and -msan where they work 2018-08-21 03:38:27 +00:00
link cmd/link: pass provided ldflags when testing whether an ldflag is supported 2018-08-21 03:53:55 +00:00
nm cmd/nm: fix TestGoExec on Plan 9 2018-06-11 20:58:09 +00:00
objdump cmd/objdump: defer closing the file after opening 2018-08-21 02:45:00 +00:00
pack cmd: remove some unused parameters 2018-04-02 15:51:31 +00:00
pprof cmd/pprof: disable readline UI support for TERM=dumb 2018-07-11 01:08:56 +00:00
test2json cmd/test2json: document missing "skip" action 2018-03-24 18:37:22 +00:00
trace runtime, sycall/js: add support for callbacks from JavaScript 2018-06-14 21:50:53 +00:00
vendor cmd/vendor/golang.org/x/sys/unix: pick up fixes for TestUtimesNanoAt 2018-07-02 15:39:44 +00:00
vet cmd/vet: implement old TODO from testdata/print.go 2018-08-21 03:39:47 +00:00