diff options
Diffstat (limited to 'src/encoding/json/v2_encode_test.go')
| -rw-r--r-- | src/encoding/json/v2_encode_test.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/encoding/json/v2_encode_test.go b/src/encoding/json/v2_encode_test.go index 16e8d01218..11c5218649 100644 --- a/src/encoding/json/v2_encode_test.go +++ b/src/encoding/json/v2_encode_test.go @@ -16,7 +16,9 @@ import ( "regexp" "runtime/debug" "strconv" + "sync" "testing" + "testing/synctest" "time" ) @@ -1408,3 +1410,21 @@ func TestIssue63379(t *testing.T) { } } } + +// Issue #73733: encoding/json used a WaitGroup to coordinate access to cache entries. +// Since WaitGroup.Wait is durably blocking, this caused apparent deadlocks when +// multiple bubbles called json.Marshal at the same time. +func TestSynctestMarshal(t *testing.T) { + var wg sync.WaitGroup + for range 5 { + wg.Go(func() { + synctest.Test(t, func(t *testing.T) { + _, err := Marshal([]string{}) + if err != nil { + t.Errorf("Marshal: %v", err) + } + }) + }) + } + wg.Wait() +} |
