You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CBMC version: 5.95.1
Operating system: Ubuntu 20.04, macOS 14.3
Exact command line resulting in the issue: cbmc array_copy.c
What behaviour did you expect: SUCCESS for assert(__CPROVER_array_equal(a, b));
What happened instead: FAILURE for assert(__CPROVER_array_equal(a, b));
The text was updated successfully, but these errors were encountered:
The problem is caused by use creating a fresh object-size symbol for each allocation of dynamic size. So these are two arrays of size symex_dynamic::dynamic_object_size!0#1 and symex_dynamic::dynamic_object_size$0!0#1, respectively. Looks like we need to fix how we build those object sizes.
Using simple type equality is too strict for arrays of non-constant
size: we introduce a fresh symbol for the size of each dynamically
allocated object of non-constant size. Consequently, two dynamically
allocated arrays of non-constant size will never pass type equality
checking, even when their underlying sizes are the same.
We now explicitly compare the sizes of the two arrays passed to
array_equal when types are not trivially equal.
Fixes: diffblue#8176
The assertion in this program fails unexpectedly, but passes with
size = N
for many different concreteN
CBMC version: 5.95.1
Operating system: Ubuntu 20.04, macOS 14.3
Exact command line resulting in the issue: cbmc array_copy.c
What behaviour did you expect:
SUCCESS
forassert(__CPROVER_array_equal(a, b));
What happened instead:
FAILURE
forassert(__CPROVER_array_equal(a, b));
The text was updated successfully, but these errors were encountered: