-
Notifications
You must be signed in to change notification settings - Fork 10
Open
Description
Describe the bug
Hi, I'm hitting a recursion limit when I try to generate a tar derivation tree and then mutate it.
Traceback (most recent call last):
File "/home/kris/fuzzing/run.py", line 12, in <module>
print(solver.mutate(dt))
^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/solver.py", line 908, in mutate
mutated = mutator.mutate(inp)
^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/mutator.py", line 77, in mutate
self.__get_mutator()(inp).map(tap(inc_applied_mutations)).value_or(inp)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/mutator.py", line 165, in generalize_subtree
self.fuzzer.expand_tree(
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/fuzzer.py", line 369, in expand_tree
tree = self.expand_tree_with_strategy(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/fuzzer.py", line 335, in expand_tree_with_strategy
limit is None or self.possible_expansions(tree) < limit
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/fuzzer.py", line 196, in possible_expansions
return sum(self.possible_expansions(c) for c in node.children)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/fuzzer.py", line 196, in <genexpr>
return sum(self.possible_expansions(c) for c in node.children)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
[...]
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/fuzzer.py", line 196, in possible_expansions
return sum(self.possible_expansions(c) for c in node.children)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/fuzzer.py", line 196, in <genexpr>
return sum(self.possible_expansions(c) for c in node.children)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded
To Reproduce
Run this minimum reproducible example:
from isla_formalizations.tar import TAR_CONSTRAINTS, TAR_GRAMMAR
from isla.solver import ISLaSolver
solver = ISLaSolver(
grammar=TAR_GRAMMAR,
formula=TAR_CONSTRAINTS,
max_number_free_instantiations=1,
max_number_smt_instantiations=1
)
dt = solver.solve()
print(dt)
print(solver.mutate(dt))Expected behavior
I should get a mutated derivation tree.
System/Installation Specs:
- ISLa Version: latest
main(commit1a04b7833d2960cffe037fb88826111769fefbeb) - Python Version:
3.12 - OS:
5.15.167-1-MANJARO x86_64 GNU/Linux
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels