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

Goto programs with missing function bodies should not be considered well-formed #1949

Open
tautschnig opened this issue Mar 19, 2018 · 1 comment

Comments

@tautschnig
Copy link
Collaborator

Once #1889 is merged we should be in a good position to disallow any analysis on goto programs that contain function calls to either completely undeclared functions (should never be allowed) or functions without a body. Input programs of course contain such code with varying assumptions on non-determinism, but an analysis should not make its own private assumptions about this. Instead, user-specified transformations on goto programs should be run before any analysis to produce function bodies. In any analysis, functions having non-empty bodies should be an invariant rather than a conditional check.

@TGWDB TGWDB added the Version 6 Pull requests and issues requiring a major version bump label Feb 21, 2023
@esteffin esteffin moved this to Candidates in Version 6 Nov 8, 2023
@esteffin
Copy link
Contributor

esteffin commented Nov 8, 2023

There are 2 scenarios here:

  1. undeclared functions,
  2. (declared) functions without a body.

For scenario 1 we are currently issuing a warning during type-checking and one during symex (this latter warns about it being a function without a body).
For scenario 2 we just issue the warning during symex about function without body.

We understand the consideration behind scenario 1 (blocking by throwing an error when encountering undeclared functions).

Regarding scenario 2 we agree that the current assumption that functions with no body don't have side-effects on arguments and global variables is very strong.
However there are legitimate use-cases where we use functions with no body to generate nondeterministic values and these use-cases may introduce frictions when we try to pass the changes.

Are there any considerations that we are missing here for scenario 2?

@TGWDB TGWDB added Version 7 and removed Version 6 Pull requests and issues requiring a major version bump labels Nov 16, 2023
@TGWDB TGWDB moved this from Candidates to Rejected in Version 6 Nov 16, 2023
@TGWDB TGWDB removed this from Version 6 Nov 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants