diff options
| author | Austin Clements <austin@google.com> | 2023-10-18 16:49:50 -0400 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2023-10-18 21:09:43 +0000 |
| commit | 3803c858800b90fb8ae1669a3ac1f337be45f886 (patch) | |
| tree | 72ce1ed1598b24657c88107165c885b08d8e5e52 /test/codegen | |
| parent | 1d400cdfc995b1467d6901e0042bca0f37ffdec2 (diff) | |
| download | go-3803c858800b90fb8ae1669a3ac1f337be45f886.tar.xz | |
cmd/go: work around race in fmtCmd
CL 529219 made an existing race with accessing Builder.scriptDir from
Builder.fmtcmd (and now also Builder.Showcmd) much more likely by
dropping a theoretically unnecessary condition from the call from
Builder.run to Builder.fmtcmd.
For an example race report, see
https://build.golang.org/log/c3cad62d0fc33a8381d2091661c685ea1fc525c4
The race is between
(*Builder).cover2() -> (*Builder).run() -> (*Builder).fmtcmd()
and various other call paths of the form
(*Builder).build() -> (*gcToolchain).* (*Builder).Showcmd() -> (*Builder).fmtcmd()
The race can be reproduced with
go install -race cmd/go
stress -p 1 go test -x -cover -a log
Return this race to its existing likelihood by putting the condition
back. This isn't a "correct" solution because the race could still
happen if the "cover" tool invoked by Builder.cover2 emits output. But
this will do for a temporary fix.
Change-Id: Ifd811dea07f05e1422fd02b63cd958627727aa12
Reviewed-on: https://go-review.googlesource.com/c/go/+/536355
Auto-Submit: Austin Clements <austin@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'test/codegen')
0 files changed, 0 insertions, 0 deletions
