Closed
Description
Supose we do path exploration on this program
int main()
{
int x;
if(x)
assert(0);
else
assert(0);
}
by running
cbmc --paths lifo /tmp/foo.c
the output indicates that both paths were explored. However, in each case, the assertion on the other path is printed as being successful, even though it clearly fails, because that path was not the one currently under consideration:
...
** Results:
[main.assertion.1] assertion 0: SUCCESS
[main.assertion.2] assertion 0: FAILURE
** 1 of 2 failed (2 iterations)
VERIFICATION FAILED
___________________________
Starting new path (1 to go)
...
** Results:
[main.assertion.1] assertion 0: FAILURE
[main.assertion.2] assertion 0: SUCCESS
** 1 of 2 failed (2 iterations)
VERIFICATION FAILED
we should not print a spurious SUCCESS
result for assertions that lie on a path that we're not currently exploring.
Metadata
Metadata
Assignees
Labels
No labels