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

failing unwinding assertion not properly supported #44

Open
prapicault opened this issue Dec 18, 2014 · 6 comments
Open

failing unwinding assertion not properly supported #44

prapicault opened this issue Dec 18, 2014 · 6 comments

Comments

@prapicault
Copy link
Contributor

PK "Property shown as failed even though the reason is a failing unwinding assertion. The corresponding loop could be highlighted. And a tool tip/hint to increase the unwinding bound should be shown."

@prapicault
Copy link
Contributor Author

I'm not completely understanding the issue. Could you please provide an example that reproduces the issue?

@prapicault prapicault changed the title Failure because of unwinding assertion failing unwinding assertion not properly supported Dec 18, 2014
@peterschrammel
Copy link
Member

int x=0;
while(x<10) //c::main.0
{
assert(x<=5);
x++;
}
analyze with --unwind 2 or --unwindset c:main.0:2

@prapicault
Copy link
Contributor Author

The failure entry in the trace does not include enough information to do the linking to the loop, and it is not clear how to distinguish between a problem with the unwinding limit and a real failure.

@peterschrammel
Copy link
Member

The suffix number of the property name, e.g. "main.unwind.0" is the same as the one of the loop id, e.g. "main.0".

@prapicault
Copy link
Contributor Author

So, is the cue the presence of "unwind" in the middle of the property name?

I'm moving this to an enhancement because in order to obtain the information required to do the proper presentation of the problem and provide linking to the loop section of the view; the view would have to read the counter example to extract the desired information, which it never had to do. So far reading the counter example was not necessary because it was sufficient to know the return code of CBMC to present the failure of a property in the view.

One way for CBMC to make it easier would be:
1 - provide a different exit code for such case so the view does not have to load every counter example
2 - optionally find a way to provide the problematic loop id in a more compact version

@peterschrammel
Copy link
Member

I see. Then at least, during debugging the information can be displayed when the unwinding assertion has been reached.

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

2 participants