aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/json/v2_encode_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/json/v2_encode_test.go')
-rw-r--r--src/encoding/json/v2_encode_test.go20
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()
+}