-
Notifications
You must be signed in to change notification settings - Fork 273
RFC: How to handle unsound flags #6480
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
Comments
Thanks for starting this discussion! I am sure you will be shocked to find out that I have opinions on this subject and that my contribution to the discussion is going to be more questions than answers!
To drag this back to something more concrete, how would you classify the following flags and why: |
I'll chime in with a small and incomplete addition to the discussion. Martin has many good points, and perhaps the discussion is mis-focused on the idea of "unsound", although this is also the hard challenge that initiated the discussion. So I'm going to slightly side-step this point and try to focus on a smaller and more concrete area to address immediately. CBMC is not bug free, so there are going to be some problems with soundness in CBMC, however we treat most of these as bugs and do not consider this a core concern. However, there are many options and features which range from no impact on the analysis results, to experimental and speculative with known unsound/incomplete behaviours. Considering this context, I think the best scope for this RFC and follow-up is to be able to clearly mark which features/options are "experimental" and also provide clear feedback to users. Assuming this is the right path, then we come to two main questions:
So to direct the discussion towards a short term solution to address the key points, it would be good to know if #6479 does indeed correctly warn on "experimental" features/options. If this is the complete list (other than those already marked), then we can move on to 2 and converge on a uniform way to notify a user. |
I feel bound to have an opinion as I feel like I may have been the one to provoke this. Both under and over approximations matter to me, depending on the question I am asking:
I’ll continue under the understanding that I’m speaking only of things that I would call a “problem”, and not bothering with the mere “annoyances”. I think of the tool as having a “core” and a number of “optional extras”. You always have to have the core, but you can chose to run one of the “optional extras”. With regards to the core, I believe there is an expectation that it functions correctly, there may be bugs that result in “problems”, but once noticed they will be fixed as a matter of priority. When it comes to the optional extras I propose we consider some of them to be “production” and some to be “experimental”. We could move an “experimental” feature to “production” in the following circumstance:
A “production” feature could move back to “experimental” under the following circumstances.
I’d like to propose the following:
|
Now that we've all had a chance to comment on this let's meet together to discuss how we wish to proceed. I have scheduled a meeting for 15:00 UTC on Monday 2022-01-24. If you would like an invite to the meeting then drop me an email at [email protected] |
Hello everyone, These are the notes we've collected from the live discussion. Please do let me know if there are errors of omission or I'm misrepresenting something that has been said. Thanks for your time, Notes from the Discussion on RFC-6480 - Unsound CLI options handling
The action plan is:
|
Thanks for writing this up @NlightNFotis I think this is a good summary of the discussion. The only thing I think I might add is that this is fundamentally about communicating and managing user expectations; it is a "soft" problem not a "tech" problem. There are two aspects to this, acquiring / life-cycle-ing / managing the information from developers about what to expect and communicating it to users. |
Also cbmc/src/goto-checker/properties.h Line 24 in a0fe71a
|
I believe we have addressed the short-term actions by merging #6479 (which adds both documentation as well as warnings). Longer-term work (making CBMC's results n-valued) remains to be done, but then this also overlaps with reporting coverage, which is being tracked elsewhere. To everyone: closing this for the time being, but feel free to reopen if you believe we need to keep tracking some activity in this issue. |
Hi,
This is to probe a discussion on the handling of unsound flags and arguments to
cbmc
and assorted tools going forward.
To that effect I have drafted a PR (#6479) which is issuing a warning in
cbmc
andgoto-instrument
if the user has enabled any of the known unsound flags either directly or indirectly.
This may or may not be fine as a temporary solution (hence why it's a draft PR) but long
term there needs to be different handling of it. At the moment I'm unsure if the unsound options
are resolved if say some associated bugs (like in #6394) are resolved - actually, I'm unsure
about the extend of unsoundness that these options entail in general.
I'm open to modifying/closing that draft PR if further investigation (I'm planning to deal with #6394 as
a next step) shows that these issues are transient and really are just a manifestation of one bug, and
then fixing that restores soundness (as an example).
But there's a lot of uncertainty surrounding that from my end, hence why I'd like to solicit
some advise from the community. There has been some discussion already about this in #6397, but
this RFC is about converging on an acceptable solution for the long term handling of issues like these.
I'd appreciate your input 👍🏻
The text was updated successfully, but these errors were encountered: