Fix evm state handling regression (#741)
* Revert breaking change * Add assertion to verify states being queued
This commit is contained in:
parent
105a7d3aee
commit
9f0d25c5d9
@ -253,7 +253,7 @@ class Executor(Eventful):
|
|||||||
'''
|
'''
|
||||||
#save the state to secondary storage
|
#save the state to secondary storage
|
||||||
state_id = self._workspace.save_state(state)
|
state_id = self._workspace.save_state(state)
|
||||||
self._put(state_id)
|
self.put(state_id)
|
||||||
self._publish('did_enqueue_state', state_id, state)
|
self._publish('did_enqueue_state', state_id, state)
|
||||||
return state_id
|
return state_id
|
||||||
|
|
||||||
@ -304,7 +304,7 @@ class Executor(Eventful):
|
|||||||
###############################################
|
###############################################
|
||||||
# Priority queue
|
# Priority queue
|
||||||
@sync
|
@sync
|
||||||
def _put(self, state_id):
|
def put(self, state_id):
|
||||||
''' Enqueue it for processing '''
|
''' Enqueue it for processing '''
|
||||||
self._states.append(state_id)
|
self._states.append(state_id)
|
||||||
self._lock.notify_all()
|
self._lock.notify_all()
|
||||||
|
|||||||
@ -15,6 +15,7 @@ from multiprocessing.managers import SyncManager
|
|||||||
|
|
||||||
from .smtlib import solver
|
from .smtlib import solver
|
||||||
from .smtlib.solver import SolverException
|
from .smtlib.solver import SolverException
|
||||||
|
from .state import State
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -389,6 +390,7 @@ class Workspace(object):
|
|||||||
:return: New state id
|
:return: New state id
|
||||||
:rtype: int
|
:rtype: int
|
||||||
"""
|
"""
|
||||||
|
assert isinstance(state, State)
|
||||||
id_ = self._get_id()
|
id_ = self._get_id()
|
||||||
self._store.save_state(state, '{}{:08x}{}'.format(self._prefix, id_, self._suffix))
|
self._store.save_state(state, '{}{:08x}{}'.format(self._prefix, id_, self._suffix))
|
||||||
return id_
|
return id_
|
||||||
|
|||||||
@ -925,7 +925,7 @@ class ManticoreEVM(Manticore):
|
|||||||
assert len(self._executor.list()) == 0
|
assert len(self._executor.list()) == 0
|
||||||
|
|
||||||
for state_id in context['_saved_states']:
|
for state_id in context['_saved_states']:
|
||||||
self._executor.enqueue(state_id)
|
self._executor.put(state_id)
|
||||||
context['_saved_states'] = []
|
context['_saved_states'] = []
|
||||||
|
|
||||||
#A callback will use _pending_transaction and issue the transaction
|
#A callback will use _pending_transaction and issue the transaction
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user