Skip to content

Commit

Permalink
fix: revert part of near#4181 to classify FailedWithNoError as determ…
Browse files Browse the repository at this point in the history
…inistic
  • Loading branch information
matklad committed May 6, 2021
1 parent 39af874 commit 68e8e07
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion runtime/near-vm-runner/src/wasmer_runner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,21 @@ impl IntoVMError for wasmer_runtime::error::RuntimeError {
// Failed unwinder may happen in the case of deep recursion/stack overflow.
// Also can be thrown on unreachable instruction, which is quite unfortunate.
InvokeError::FailedWithNoError => VMError::FunctionCallError(
FunctionCallError::Nondeterministic("FailedWithNoError".to_string()),
// XXX: this is a hot-fix. Initially, we treated this error
// case as a normal one (so, we stored this error in our
// state, etc.)
//
// Then, in
// https://github.com/near/nearcore/pull/4181#discussion_r606267838
// we reasoned that this error actually happens
// non-deterministically, so it's better to panic in this
// case.
//
// However, when rolling this out, we noticed that this
// error happens deterministically for at least one
// contract, so here we flip it back to some deterministic
// error, which won't cause the node to panic.
FunctionCallError::WasmTrap(WasmTrap::Unreachable)
),
// Indicates that a trap occurred that is not known to Wasmer.
// As of 0.17.0, thrown only from Cranelift BE.
Expand Down

0 comments on commit 68e8e07

Please sign in to comment.