Skip to content
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

Weaken the stack scoping assumptions to avoid assuming false #441

Open
danmatichuk opened this issue Sep 3, 2024 · 0 comments
Open

Weaken the stack scoping assumptions to avoid assuming false #441

danmatichuk opened this issue Sep 3, 2024 · 0 comments
Labels
bug Something isn't working tech debt

Comments

@danmatichuk
Copy link
Collaborator

By default (without the no-assume-stack-scope flag) we inject an additional assumption into each equivalence domain that implicitly assumes everything past the scope of the current stack frame is equal. Effectively this avoids needing to reason about a fair number of spurious edge cases related to pointer aliasing, and is generally true in the cases where good stack hygiene is practiced by the program.

However it is often too strong of an assumption when the original and patched programs have even slightly different stack behavior (i.e. the patched program pushes a value onto the stack when the original doesn't). Given a sufficiently strong value domain, this can end up assuming "false" when attempting to assume the normal validity constraints for a given CFAR, thus crashing the verifier.

Two steps are warranted given this:

  1. Swap the default behavior of this flag to not be enabled.
  2. Weaken the assumption to exclude values that are provably inequivalent, since this will necessarily assume false and crash.
@danmatichuk danmatichuk added tech debt bug Something isn't working labels Sep 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working tech debt
Projects
None yet
Development

No branches or pull requests

1 participant