-
Notifications
You must be signed in to change notification settings - Fork 77
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
Undo update_suite ignoring precision difference for UNKNOWN #286
Conversation
I agree with 'awful' concerning duplication, but IMO it'd be better for goblint to handle these things instead of some ruby script - ideally we'd get rid of it in favor of an OCaml executable or some minimal shell script ( |
@jerhard and I were tossing this back and forth over lunch and something we discussed at some point was using something along the lines of Then, the expected result is immediately obvious to Goblint itself, and Goblint can either output things for all asserts or only those where something failed without having to somehow do a regex on the comments. Also, once could use the syntactic search to identify those places where The question that is still open is how to integrate warnings different from asserts into this setting. Opinions? |
Good point to keep in mind.
Pro:
Con:
|
Tbh, I don't really like the idea of this regression testing check ( But that's all beside the point for this issue of update_suite not reporting possible unsoundness cases. If we want to discuss completely redoing the regression testing architecture, it's best to have another issue for that. And that won't solve the fact that we still have ambiguous uses of |
#288 (comment) $ grep -E 'UNKNOWN$' -r tests/regression | wc -l
313 All these need to be replaced with |
This is the idea of #110, yes. Although we also have some cases like this: analyzer/tests/regression/01-cpa/32-earlyglobs.c Lines 7 to 9 in cd6cf51
It's not UNKNOWN! because in the concrete semantics, it is known. It's not TODO because it shouldn't be fixed, because it's the whole point of earlyglobs . So probably one needs a third UNKNOWN! -like category for things which should remain unknown but only by our own choice of imprecision, not by concrete semantics.
|
This revealed an issue with a congruences test now: #260 (comment). |
In #196 among many other changes we merged this innocent-looking change: 0cb2c9c. This PR reverts that.
During #278 I looked over all the UNKNOWN asserts to see if making
assert
refine the state would cause problems. I saw cases where problems should have appeared but didn't due to the reverted change, which completely silenced all the cases where we still have anUNKNOWN
annotation but suddenly output success instead. I only realized this when I used regtest (which awfully does similar expected comparisons within Goblint...) and saw different output.Because we haven't completely gone through the entire regression test suite to recategorize each
UNKNOWN
to eitherUNKNOWN!
orTODO
, then we still have cases whereUNKNOWN
is used with the meaning that it must be unknown. Therefore the script should report if we're suddenly unsoundly reporting success or fail. See #110.