I've encountered this exception a few times in my angr application. I can't trigger it deterministically yet but I am adding some logging to hopefully help:
ERROR | 2020-02-04 09:27:44,201 | angr.exploration_techniques.oppologist | Original block hit an unsupported error
Traceback (most recent call last):
File "/home/ed/.virtualenvs/angr/lib/python3.6/site-packages/cachetools/cache.py", line 39, in __getitem__
return self.__data[key]
KeyError: 686789272
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ed/Documents/angr-dev/angr/angr/exploration_techniques/oppologist.py", line 82, in successors
return simgr.successors(state, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/misc/hookset.py", line 80, in __call__
return self.func(*args, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/sim_manager.py", line 421, in successors
return self._project.factory.successors(state, **run_args)
File "/home/ed/Documents/angr-dev/angr/angr/factory.py", line 58, in successors
return self.default_engine.process(*args, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/slicing.py", line 19, in process
return super().process(*args, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/engine.py", line 143, in process
self.process_successors(self.successors, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/failure.py", line 21, in process_successors
return super().process_successors(successors, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/syscall.py", line 18, in process_successors
return super().process_successors(successors, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/hook.py", line 54, in process_successors
return super().process_successors(successors, procedure=procedure, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/unicorn.py", line 90, in process_successors
return super().process_successors(successors, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/soot/engine.py", line 64, in process_successors
return super().process_successors(successors, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/heavy.py", line 135, in process_successors
self.handle_vex_block(irsb)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/super_fastpath.py", line 19, in handle_vex_block
super().handle_vex_block(irsb)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/slicing.py", line 26, in handle_vex_block
super().handle_vex_block(irsb)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/actions.py", line 18, in handle_vex_block
super().handle_vex_block(irsb)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/inspect.py", line 45, in handle_vex_block
super().handle_vex_block(irsb)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/light.py", line 406, in handle_vex_block
self._handle_vex_stmt(stmt)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/slicing.py", line 30, in _handle_vex_stmt
super()._handle_vex_stmt(stmt)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/inspect.py", line 40, in _handle_vex_stmt
super()._handle_vex_stmt(stmt)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/resilience.py", line 36, in inner
return getattr(super(VEXResilienceMixin, self), func)(*iargs, **ikwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/heavy.py", line 199, in _handle_vex_stmt
super()._handle_vex_stmt(stmt)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/light.py", line 50, in _handle_vex_stmt
handler(stmt)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/light.py", line 187, in _handle_vex_stmt_WrTmp
self._analyze_vex_stmt_WrTmp_data(stmt.data)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/light.py", line 183, in _analyze_vex_stmt_WrTmp_data
def _analyze_vex_stmt_WrTmp_data(self, *a, **kw): return self. _handle_vex_expr(*a, **kw)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/inspect.py", line 31, in _handle_vex_expr
return super()._handle_vex_expr(expr)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/light.py", line 54, in _handle_vex_expr
result = handler(expr)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/light/light.py", line 86, in _handle_vex_expr_Load
expr.end)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/actions.py", line 96, in _perform_vex_expr_Load
result = super()._perform_vex_expr_Load(addr, ty, end, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/heavy.py", line 279, in _perform_vex_expr_Load
result = super()._perform_vex_expr_Load(addr, ty, endness, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/claripy/datalayer.py", line 54, in _perform_vex_expr_Load
res = super()._perform_vex_expr_Load(addr, ty, endness, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/engines/vex/heavy/heavy.py", line 28, in _perform_vex_expr_Load
return self.state.memory.load(addr, self._ty_to_bytes(ty), endness=endness, action=action, inspect=inspect)
File "/home/ed/Documents/angr-dev/angr/angr/storage/memory.py", line 789, in load
events=not disable_actions, ret_on_segv=ret_on_segv)
File "/home/ed/Documents/angr-dev/angr/angr/state_plugins/symbolic_memory.py", line 576, in _load
addrs = self.concretize_read_addr(dst)
File "/home/ed/Documents/angr-dev/angr/angr/state_plugins/symbolic_memory.py", line 427, in concretize_read_addr
return self._apply_concretization_strategies(addr, strategies, 'load')
File "/home/ed/Documents/angr-dev/angr/angr/state_plugins/symbolic_memory.py", line 375, in _apply_concretization_strategies
a = s.concretize(self, e)
File "/home/ed/Documents/angr-dev/angr/angr/concretization_strategies/__init__.py", line 57, in concretize
return self._concretize(memory, addr)
File "/home/ed/Documents/angr-dev/angr/angr/concretization_strategies/range.py", line 13, in _concretize
mn,mx = self._range(memory, addr)
File "/home/ed/Documents/angr-dev/angr/angr/concretization_strategies/__init__.py", line 49, in _range
return (self._min(memory, addr, **kwargs), self._max(memory, addr, **kwargs))
File "/home/ed/Documents/angr-dev/angr/angr/concretization_strategies/__init__.py", line 25, in _min
return memory.state.solver.min(addr, exact=kwargs.pop('exact', self._exact), **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/state_plugins/solver.py", line 144, in concrete_shortcut_scalar
return f(self, *args, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/state_plugins/sim_action_object.py", line 57, in ast_stripper
return f(*new_args, **new_kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/state_plugins/solver.py", line 87, in wrapped_f
return f(*args, **kwargs)
File "/home/ed/Documents/angr-dev/angr/angr/state_plugins/solver.py", line 539, in min
return self._solver.min(e, extra_constraints=self._adjust_constraint_list(extra_constraints), exact=exact)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/concrete_handler_mixin.py", line 37, in min
return super(ConcreteHandlerMixin, self).min(e, **kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/constraint_filter_mixin.py", line 52, in min
return super(ConstraintFilterMixin, self).min(e, extra_constraints=ec, **kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/sat_cache_mixin.py", line 98, in min
extra_constraints=extra_constraints, **kwargs
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/simplify_helper_mixin.py", line 7, in min
self.simplify()
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/constraint_deduplicator_mixin.py", line 22, in simplify
added = super(ConstraintDeduplicatorMixin, self).simplify(**kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/sat_cache_mixin.py", line 34, in simplify
new_constraints = super(SatCacheMixin, self).simplify()
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/simplify_skipper_mixin.py", line 36, in simplify
return super(SimplifySkipperMixin, self).simplify(*args, **kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontends/composite_frontend.py", line 396, in simplify
s.simplify()
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/constraint_deduplicator_mixin.py", line 22, in simplify
added = super(ConstraintDeduplicatorMixin, self).simplify(**kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/sat_cache_mixin.py", line 34, in simplify
new_constraints = super(SatCacheMixin, self).simplify()
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/simplify_skipper_mixin.py", line 36, in simplify
return super(SimplifySkipperMixin, self).simplify(*args, **kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontend_mixins/model_cache_mixin.py", line 112, in simplify
results = super(ModelCacheMixin, self).simplify(*args, **kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontends/full_frontend.py", line 80, in simplify
ConstrainedFrontend.simplify(self)
File "/home/ed/Documents/angr-dev/claripy/claripy/frontends/constrained_frontend.py", line 117, in simplify
simplified = simplify(And(*to_simplify)).split(['And']) #pylint:disable=no-member
File "/home/ed/Documents/angr-dev/claripy/claripy/ast/base.py", line 1016, in simplify
s = e._first_backend('simplify')
File "/home/ed/Documents/angr-dev/claripy/claripy/ast/base.py", line 951, in _first_backend
try: return getattr(b, what)(self)
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 70, in z3_condom
return f(*args, **kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 1017, in simplify
o = self._abstract(s)
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 70, in z3_condom
return f(*args, **kwargs)
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 393, in _abstract
return self._abstract_internal(e.ctx.ctx, e.ast)
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 427, in _abstract_internal
children = [ self._abstract_internal(ctx, z3.Z3_get_app_arg(ctx, ast, i), new_split_on) for i in range(num_args) ]
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 427, in <listcomp>
children = [ self._abstract_internal(ctx, z3.Z3_get_app_arg(ctx, ast, i), new_split_on) for i in range(num_args) ]
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 427, in _abstract_internal
children = [ self._abstract_internal(ctx, z3.Z3_get_app_arg(ctx, ast, i), new_split_on) for i in range(num_args) ]
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 427, in <listcomp>
children = [ self._abstract_internal(ctx, z3.Z3_get_app_arg(ctx, ast, i), new_split_on) for i in range(num_args) ]
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 427, in _abstract_internal
children = [ self._abstract_internal(ctx, z3.Z3_get_app_arg(ctx, ast, i), new_split_on) for i in range(num_args) ]
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 427, in <listcomp>
children = [ self._abstract_internal(ctx, z3.Z3_get_app_arg(ctx, ast, i), new_split_on) for i in range(num_args) ]
[lots more removed]
File "/home/ed/Documents/angr-dev/claripy/claripy/backends/backend_z3.py", line 409, in _abstract_internal
cached_ast, _ = self._ast_cache[h]
File "/home/ed/.virtualenvs/angr/lib/python3.6/site-packages/cachetools/lru.py", line 14, in __getitem__
value = cache_getitem(self, key)
File "/home/ed/.virtualenvs/angr/lib/python3.6/site-packages/cachetools/cache.py", line 41, in __getitem__
return self.__missing__(key)
File "/home/ed/.virtualenvs/angr/lib/python3.6/site-packages/cachetools/cache.py", line 68, in __missing__
raise KeyError(key)
RecursionError: maximum recursion depth exceeded while calling a Python object