Skip to content

Commit ad6b6e9

Browse files
authored
Merge pull request #462 from filecoin-project/anorth/executor
Map all executor errors to exit codes.
2 parents f4098eb + d88bade commit ad6b6e9

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

fvm/src/executor/default.rs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,21 +109,22 @@ where
109109
gas_used,
110110
},
111111
Err(ExecutionError::Syscall(err)) => {
112-
// Errors indicate the message couldn't be dispatched at all.
113-
// Some of these errors are mapped to exit codes that persist on chain.
114-
// The remainder propagate in the Result as error numbers and cannot be persisted.
115-
// TODO: map them all to exit codes, https://github.com/filecoin-project/ref-fvm/issues/438
112+
// Errors indicate the message couldn't be dispatched at all
113+
// (as opposed to failing during execution of the receiving actor).
114+
// These errors are mapped to exit codes that persist on chain.
116115
let exit_code = match err.1 {
117-
ErrorNumber::AssertionFailed => ExitCode::SYS_ASSERTION_FAILED,
118116
ErrorNumber::InsufficientFunds => ExitCode::SYS_INSUFFICIENT_FUNDS,
119117
ErrorNumber::NotFound => ExitCode::SYS_INVALID_RECEIVER,
120-
code => {
121-
return Err(anyhow!(
122-
"unexpected syscall error when processing message: {} ({})",
123-
code,
124-
code as u32
125-
))
126-
}
118+
119+
ErrorNumber::IllegalArgument => ExitCode::SYS_ASSERTION_FAILED,
120+
ErrorNumber::IllegalOperation => ExitCode::SYS_ASSERTION_FAILED,
121+
ErrorNumber::LimitExceeded => ExitCode::SYS_ASSERTION_FAILED,
122+
ErrorNumber::AssertionFailed => ExitCode::SYS_ASSERTION_FAILED,
123+
ErrorNumber::InvalidHandle => ExitCode::SYS_ASSERTION_FAILED,
124+
ErrorNumber::IllegalCid => ExitCode::SYS_ASSERTION_FAILED,
125+
ErrorNumber::IllegalCodec => ExitCode::SYS_ASSERTION_FAILED,
126+
ErrorNumber::Serialization => ExitCode::SYS_ASSERTION_FAILED,
127+
ErrorNumber::Forbidden => ExitCode::SYS_ASSERTION_FAILED,
127128
};
128129

129130
backtrace.set_cause(backtrace::Cause::new("send", "send", err));

0 commit comments

Comments
 (0)