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
The issue is due to a large call context with the max call depth of 1024. A call context includes trace info, which is a list of other call contexts. This recursive structure, combined with the behavior of z3 objects' deepcopy (which doesn't seem to memoize objects recursively referenced), seems to cause this issue.
@karmacoma-eth could we consider using a data structure for traces that doesn't need deepcopy()? For example, since trace items are never removed, we could use a backward-growing linked list to store them in reverse order. This way, instead of deepcopying the entire trace list, we can just copy the trace header pointer, as adding a new trace item doesn't affect the original trace.
For example, two traces, trace1 = [ item1, item2 ] and trace2 = [ item1, item2, item3 ], can be represented using a single copy of the following linked list, where trace1 points to item2 and, and trace2 points to item3:
Describe the bug
It is possible to get a crash due to infinite deepcopy recursion of some internal z3 objects
To Reproduce
Environment:
The text was updated successfully, but these errors were encountered: