@@ -109,21 +109,22 @@ where
109
109
gas_used,
110
110
} ,
111
111
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.
116
115
let exit_code = match err. 1 {
117
- ErrorNumber :: AssertionFailed => ExitCode :: SYS_ASSERTION_FAILED ,
118
116
ErrorNumber :: InsufficientFunds => ExitCode :: SYS_INSUFFICIENT_FUNDS ,
119
117
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 ,
127
128
} ;
128
129
129
130
backtrace. set_cause ( backtrace:: Cause :: new ( "send" , "send" , err) ) ;
0 commit comments