diff options
| author | Nicolas Hillegeer <aktau@google.com> | 2025-10-21 04:43:36 -0700 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2025-10-21 11:27:38 -0700 |
| commit | 8f74f9daf4d2fe708cf28d0e2b9cce079fa19248 (patch) | |
| tree | 8da7a6c7f2c063e483bd072380fce4044fad8b30 /src | |
| parent | 8a6c64f4fe726c956ea876cea0fed9494290130f (diff) | |
| download | go-8f74f9daf4d2fe708cf28d0e2b9cce079fa19248.tar.xz | |
sync: re-enable race even when panicking
Not doing this can cause user code running after this panic (e.g.:
defers) to produce non-existing races.
Change-Id: Ia6aec88aaeee3b9c17e7b8019d697ffa88dfb492
Reviewed-on: https://go-review.googlesource.com/c/go/+/713460
Commit-Queue: Nicolas Hillegeer <aktau@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Nicolas Hillegeer <aktau@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/sync/waitgroup.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/sync/waitgroup.go b/src/sync/waitgroup.go index 5b035aa396..195f839da4 100644 --- a/src/sync/waitgroup.go +++ b/src/sync/waitgroup.go @@ -204,13 +204,14 @@ func (wg *WaitGroup) Wait() { } } runtime_SemacquireWaitGroup(&wg.sema, synctestDurable) - if wg.state.Load() != 0 { - panic("sync: WaitGroup is reused before previous Wait has returned") - } + isReset := wg.state.Load() != 0 if race.Enabled { race.Enable() race.Acquire(unsafe.Pointer(wg)) } + if isReset { + panic("sync: WaitGroup is reused before previous Wait has returned") + } return } } |
