Commit d1f566c6 authored by Andreas Haas's avatar Andreas Haas Committed by Commit Bot

[wasm][fuzzer] Handle Interpreter step limit exhaustion.

If the fuzzer input cannot be executed in the interpreter within a step
limit, then the interpreter does not calculate the result but instead
finishes with a RangeError. The problem with the input of the bug report
was that the interpreter finished with that RangeError, but the
execution of the compiled code still returned a result, which was
naturally not a RangeError and therefore caused the result check to fail.
With this CL the compiled code is not even executed when there is a
RangeError after the execution in the interpreter. Thereby we also
avoid executing an infinite loop.

BUG=chromium:734435
R=clemensh@chromium.org

Change-Id: If9d0fb9e14e84f06d6f11d22f882363d56c1c20b
Reviewed-on: https://chromium-review.googlesource.com/544838
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46140}
parent 4f85c192
......@@ -162,6 +162,12 @@ int WasmExecutionFuzzer::FuzzWasmModule(
0, interpreter_args.get(), &possible_nondeterminism);
}
// Do not execute the generated code if the interpreter did not finished after
// a bounded number of steps.
if (interpreter_thrower.error()) {
return 0;
}
int32_t result_compiled;
{
ErrorThrower compiler_thrower(i_isolate, "Compiler");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment