code: func (st *State) PushError(err error) {
  	if st.error == nil {
  		// Make sure we are not wrapping a known nil value
  		ex := errors.AsException(err)
  		if ex != nil {
  			st.error = ex
  		}
  	}
  }
docs: // Errors pushed to state may end up in TxExecutions and therefore the merkle state so it is essential that errors are
  // deterministic and independent of the code path taken to execution (e.g. replay takes a different path to that of
  // normal consensus reactor so stack traces may differ - as they may across architectures)