You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
Even if the limit is raised via sys.setrecursionlimit(100000), a different exception is thrown:
Traceback (most recent call last):
File "/home/kris/fuzzing/run.py", line 15, in <module>
print(solver.mutate(dt))
^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/solver.py", line 911, in mutate
maybe_fixed = self.repair(mutated, fix_timeout_seconds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/solver.py", line 806, in repair
if self.check(inp) or not is_successful(self.top_constant):
^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/solver.py", line 735, in check
result = evaluate(self.formula, inp, self.grammar)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/evaluator.py", line 182, in evaluate
without_predicates: Formula = replace_formula(
^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/language.py", line 2283, in replace_formula
replace_formula(child, to_replace, replace_with)
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/language.py", line 2283, in replace_formula
replace_formula(child, to_replace, replace_with)
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/language.py", line 2283, in replace_formula
replace_formula(child, to_replace, replace_with)
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/language.py", line 2268, in replace_formula
result = to_replace(in_formula)
^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/evaluator.py", line 184, in <lambda>
lambda f: evaluate_predicates_action(f, reference_tree, graph),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kris/fuzzing/venv/lib/python3.12/site-packages/isla/evaluator.py", line 249, in evaluate_predicates_action
assert all(
^^^^
AssertionError
Still, it shouldn't be required to raise the recursion depth limit.
Describe the bug
Hi, I'm hitting a recursion limit when I try to generate a tar derivation tree and then mutate it.
To Reproduce
Run this minimum reproducible example:
Expected behavior
I should get a mutated derivation tree.
System/Installation Specs:
main
(commit1a04b7833d2960cffe037fb88826111769fefbeb
)3.12
5.15.167-1-MANJARO x86_64 GNU/Linux
The text was updated successfully, but these errors were encountered: