-
Notifications
You must be signed in to change notification settings - Fork 63
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Path satisfiability checking is not working #723
Comments
Incidentally, it is kind of strange that the example above stops at all. Why does |
In this case, I'm pretty sure this terminates due to arithmetic interval information. At each step the modulus operation reduces the arithmetic interval by 1; this eventually drive the interval down to 0 and the loop terminates. The theoretical upper bound on the number of gcd calls required is rather less than that, I think, but it probably relies on nonlinear arithmetic to discover; I'm not surprised path sat checking doesn't help here. |
The recursion depth for an n-bit GCD is the nth fIbonacci number. |
However, the recursion depth of the proof above is 1, since only the low bit of each input is symbolic. |
OK, yeah, something very weird is going on with SAW's path sat checking. Running the following program through
|
This is the first breaking nightly --- https://saw.galois.com/builds/nightly/saw-0.2-2018-12-13-MacOSX-64.tar.gz This one works --- https://saw.galois.com/builds/nightly/saw-0.2-2018-12-06-MacOSX-64.tar.gz
Unfortunately there's a weeklong gap between the two nightlies. :-( |
As far as I can tell, this problem stems from GaloisInc/crucible@d429bcb. At around this time, SAW satisfiability checking was moved to use the "path satisfiability" feature. However, the We need to do the same solver communication steps as are done in the crucible |
Fixed via #873 |
I challenge anyone to find an example where setting the flag to
true
does something other than slow down symbolic execution. A simple example of this failure in action is attached.gcd.tar.gz
Less than a second to symbolically execute with
false
, a minute an a half fortrue
.The text was updated successfully, but these errors were encountered: