mirror of
https://github.com/golang/go
synced 2024-11-11 23:50:22 -07:00
sync: deflake TestWaitGroupMisuse3
If one of the helper goroutine panics, the main goroutine call to Wait may hang forever waiting for something to call Done. Put that call in a goroutine like the others. Fixes #35774 Change-Id: I8d2b58d8f473644a49a95338f70111d4e6ed4e12 Reviewed-on: https://go-review.googlesource.com/c/go/+/210218 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
6ef7794b24
commit
0915a19a11
@ -147,7 +147,7 @@ func TestWaitGroupMisuse3(t *testing.T) {
|
||||
}
|
||||
}()
|
||||
defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(4))
|
||||
done := make(chan interface{}, 2)
|
||||
done := make(chan interface{}, 3)
|
||||
// The detection is opportunistically, so we want it to panic
|
||||
// at least in one run out of a million.
|
||||
for i := 0; i < 1e6; i++ {
|
||||
@ -171,8 +171,13 @@ func TestWaitGroupMisuse3(t *testing.T) {
|
||||
}()
|
||||
wg.Wait()
|
||||
}()
|
||||
wg.Wait()
|
||||
for j := 0; j < 2; j++ {
|
||||
go func() {
|
||||
defer func() {
|
||||
done <- recover()
|
||||
}()
|
||||
wg.Wait()
|
||||
}()
|
||||
for j := 0; j < 3; j++ {
|
||||
if err := <-done; err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user