diff --git a/core/state/statedb.go b/core/state/statedb.go index 5c1b57de06..62ba3a8290 100644 --- a/core/state/statedb.go +++ b/core/state/statedb.go @@ -936,6 +936,9 @@ func (s *StateDB) getStateObject(addr common.Address) *stateObject { // destructed object instead of wiping all knowledge about the state object. func (s *StateDB) getDeletedStateObject(addr common.Address) *stateObject { return MVRead(s, blockstm.NewAddressKey(addr), nil, func(s *StateDB) *stateObject { + s.stateObjectsMu.Lock() + defer s.stateObjectsMu.Unlock() + // Prefer live objects if any is available if obj := s.stateObjects[addr]; obj != nil { return obj @@ -1000,9 +1003,6 @@ func (s *StateDB) getDeletedStateObject(addr common.Address) *stateObject { } func (s *StateDB) setStateObject(object *stateObject) { - s.stateObjectsMu.Lock() - defer s.stateObjectsMu.Unlock() - s.stateObjects[object.Address()] = object }