summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2024-02-22 15:39:49 -0800
committerGitHub <noreply@github.com>2024-02-22 15:39:49 -0800
commitdabfd5b841619d6846f51ec574561e4d6c899f55 (patch)
tree1c5a9a80e2a9a590b1ec6f81db31b74bd8187f85
parente2420f0d5d82982cd94a6400da812cf7c9818d97 (diff)
downloadbinaryen-dabfd5b841619d6846f51ec574561e4d6c899f55.tar.gz
binaryen-dabfd5b841619d6846f51ec574561e4d6c899f55.tar.bz2
binaryen-dabfd5b841619d6846f51ec574561e4d6c899f55.zip
Fuzzer: Ignore V8 errors on uninitialized non-defaultable locals (#6337)
See #5665 #5599, this is an existing issue and we have a workaround for it using --dce, but it does not always work. I seem to be seeing this in higher frequency since landing recent fuzzer improvements, so ignore it. There is some risk of us missing real bugs here (that we validate and V8 does not), but this is a validation error which is not as serious as a difference in behavior. And this is a long-standing issue that hasn't bitten us yet.
-rwxr-xr-xscripts/fuzz_opt.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/scripts/fuzz_opt.py b/scripts/fuzz_opt.py
index d3d50b64e..171a246d2 100755
--- a/scripts/fuzz_opt.py
+++ b/scripts/fuzz_opt.py
@@ -462,6 +462,13 @@ FUZZ_EXEC_CALL_PREFIX = '[fuzz-exec] calling'
# --fuzz-exec reports a stack limit using this notation
STACK_LIMIT = '[trap stack limit]'
+# V8 reports this error in rare cases due to limitations in our handling of non-
+# nullable locals in unreachable code, see
+# https://github.com/WebAssembly/binaryen/pull/5665
+# https://github.com/WebAssembly/binaryen/issues/5599
+# and also see the --dce workaround below that also links to those issues.
+V8_UNINITIALIZED_NONDEF_LOCAL = 'uninitialized non-defaultable local'
+
# given a call line that includes FUZZ_EXEC_CALL_PREFIX, return the export that
# is called
@@ -635,6 +642,8 @@ def run_vm(cmd):
# strings in this list for known issues (to which more need to be
# added as necessary).
HOST_LIMIT_PREFIX,
+ # see comment above on this constant
+ V8_UNINITIALIZED_NONDEF_LOCAL,
]
for issue in known_issues:
if issue in output: