Open feliperodri opened 1 year ago
cc. @jimgrundy
@markrtuttle points out that we have various conflicting sources of data about where a symbol is defined, and that is (to an extent) unavoidable (because we use ctags as well as CBMC) and we have to pick one and when it is unavoidable then perhaps we shouldn't bother the user with a warning. But... looking at these warnings I have the following thoughts:
WARNING: Skipping redefinition of symbol name: JSON_Iterate WARNING: Old symbol JSON_Iterate: file verification/cbmc/proofs/skipString/core_json.c, line 1774 WARNING: New symbol JSON_Iterate: file source/include/core_json.h, line 326
If I have to pick one of two possible definitions, I would think I would prefer the one on the .c file and not the one in the header. If I was being pedantic (which is my natural inclination) I would say that the one in the header was a "declaration" not a "definition" and so there really was no choice here as to which to choose as the site of the definition ... choose the definition not the declaration.
In most of these examples I think I would: 1) Choose the location of a definition over the location of a declaration. 2) Choose data from cbmc over data from ctags
If ctags provides multiple equally preferable locations then just pick one silently. If cbmc provides multiple equally preferable locations then that should be a warning.
But, then there is this:
WARNING: Skipping redefinition of symbol name: skipString WARNING: Old symbol skipString: file verification/cbmc/include/core_json_annex.h, line 143 WARNING: New symbol skipString: file MISSING, line 0
This is very much not OK. This is exactly why I like to keep warnings around, to surface things like this and force them to be fixed. We just sunk a whole bunch of @nwetzler into making sure this doesn't happen, so if that data came from CBMC then let's get it fixed.
@markrtuttle : please don't make this particular warning go away. Can you confirm that the bad data is coming from CBMC, and if so assign to @nwetzler to fix.
CBMC version:
5.69.1 (cbmc-5.59.0-676-gb4a4122dee)
Viewer version: 2.9 Operating system: N/A Exact command line resulting in the issue: First, clone my fork for coreJSON. Then, navigate to the proof located atcoreJSON/verification/cbmc/proofs/skipString/
. Finally, run the proof usingmake veryclean; time make
. What behaviour did you expect: No warnings. What happened instead: I keep getting the following warnings without any source location.Also, what does these warnings mean?
If this doesn't compromise the coverage report, then it should only be
INFO
instead of warnings.