-
Notifications
You must be signed in to change notification settings - Fork 100
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
Switching from u16
to u8
causes the program to run forever
#703
Comments
u16
to u8
causes the program to u16
to u8
causes the program to run forever
One problem here is how CBMC tracks points-to sets across unions (not field sensitive) and structs (field sensitive). On this example, the points-to set for one of the variables eventually contains one of the heap-allocated objects because of this imprecision. Such an over-approximation is ok, but may result in a substantially larger formula. In the What elevates this imprecision and larger formula to a performance deal breaker is the ensuing need to use array theory, which is known to be in need of improvement in CBMC for a long time already. I'm afraid there might not be very much that RMC can do here, unless there is a magical way of getting rid of unions. |
I re-tried on a recent version of Kani (fe23c27) with CBMC 5.51.0. The |
Interesting! This seems to be due to a change in Kani: I tried using CBMC 5.43.0 with the current version of Kani, and it still went through quickly. I'm curious to know what change in Kani impacted this. |
I wasn't able to pin down the specific commit that caused this improvement, but it seems to have been working well since at least Closing this issue. |
I tried this code:
using the following command line invocation:
with RMC version:
8de5cd67609
It ran for more than 30 hours without terminating.
If
u8
is replaced withu16
oru32
, it terminates in ~1 sec:The text was updated successfully, but these errors were encountered: