aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Tsai <joetsai@digital-static.net>2025-06-23 16:36:25 -0700
committerJoseph Tsai <joetsai@digital-static.net>2025-06-23 18:21:07 -0700
commitf866958246556ec609b81d31376a39efe9d51a51 (patch)
treed6bf62abb4cb9b8162627945ce2811baac641f13
parentf77a0aa6b6d90742932f0bf29d2f94459597331a (diff)
downloadgo-f866958246556ec609b81d31376a39efe9d51a51.tar.xz
cmd/dist: test encoding/json/... with GOEXPERIMENT=jsonv2
This also updates wasip1_wasm to use a 8MiB stack, which is the same stack size as what is used by go_js_wasm_exec. The increase of stack size is necessary because the jsonv2 tests exercise that the jsonv2 and jsontext packages support a hard limit of a maximum JSON nesting depth of 10000. However, even with a depth limit of 10000, this still exceeds the previously specified maximum stack size of 1 MiB. For use of JSON with untrusted inputs in WASM, we really need to support #56733 as there is no right answer for the default max depth limit to use since the max wasm stack size is determined on a per-system basis. Updates #71845 Change-Id: I3b32c58cc9f594a5c59bb3e4b20f5e86d85d8209 Reviewed-on: https://go-review.googlesource.com/c/go/+/683575 Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com> Reviewed-by: Damien Neil <dneil@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
-rwxr-xr-xlib/wasm/go_wasip1_wasm_exec2
-rw-r--r--src/cmd/dist/test.go9
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/wasm/go_wasip1_wasm_exec b/lib/wasm/go_wasip1_wasm_exec
index 3b2d12ec45..2de1758793 100755
--- a/lib/wasm/go_wasip1_wasm_exec
+++ b/lib/wasm/go_wasip1_wasm_exec
@@ -14,7 +14,7 @@ case "$GOWASIRUNTIME" in
exec wazero run -mount /:/ -env-inherit -cachedir "${TMPDIR:-/tmp}"/wazero ${GOWASIRUNTIMEARGS:-} "$1" "${@:2}"
;;
"wasmtime" | "")
- exec wasmtime run --dir=/ --env PWD="$PWD" --env PATH="$PATH" -W max-wasm-stack=1048576 ${GOWASIRUNTIMEARGS:-} "$1" "${@:2}"
+ exec wasmtime run --dir=/ --env PWD="$PWD" --env PATH="$PATH" -W max-wasm-stack=8388608 ${GOWASIRUNTIMEARGS:-} "$1" "${@:2}"
;;
*)
echo "Unknown Go WASI runtime specified: $GOWASIRUNTIME"
diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go
index c2eaeb1248..aa09d1eba3 100644
--- a/src/cmd/dist/test.go
+++ b/src/cmd/dist/test.go
@@ -743,6 +743,15 @@ func (t *tester) registerTests() {
}
}
+ // Test GOEXPERIMENT=jsonv2.
+ if !strings.Contains(goexperiment, "jsonv2") {
+ t.registerTest("GOEXPERIMENT=jsonv2 go test encoding/json/...", &goTest{
+ variant: "jsonv2",
+ env: []string{"GOEXPERIMENT=jsonv2"},
+ pkg: "encoding/json/...",
+ })
+ }
+
// Test ios/amd64 for the iOS simulator.
if goos == "darwin" && goarch == "amd64" && t.cgoEnabled {
t.registerTest("GOOS=ios on darwin/amd64",