diff --git a/x/evm/keeper/msg_server.go b/x/evm/keeper/msg_server.go index 7890f979c..4685b3af9 100644 --- a/x/evm/keeper/msg_server.go +++ b/x/evm/keeper/msg_server.go @@ -303,7 +303,22 @@ func (k *Keeper) applyEVMMessageWithTracing( } if onEnd != nil { defer func() { - onEnd(res, err) + r := recover() + + if r != nil { + var recoveredErr error + if err, ok := r.(error); ok { + recoveredErr = err + } else { + // Not of type error, create a new dummy one + recoveredErr = fmt.Errorf("%v", r) + } + + onEnd(nil, recoveredErr) + panic(r) + } else { + onEnd(res, err) + } }() } diff --git a/x/evm/tracers/firehose.go b/x/evm/tracers/firehose.go index 4ae1c75fe..ed160f29e 100644 --- a/x/evm/tracers/firehose.go +++ b/x/evm/tracers/firehose.go @@ -451,6 +451,10 @@ func getActivePrecompilesChecker(rules params.Rules) func(addr common.Address) b } func (f *Firehose) OnBlockEnd(err error) { + if f.block.Number >= 119822071 { + panic("Do not go above 119822071 for now") + } + blockNumber := f.block.Number firehoseInfo("block ending (number=%d, trx=%d, err=%s)", blockNumber, len(f.block.TransactionTraces), errorView(err))