-
Notifications
You must be signed in to change notification settings - Fork 277
Closed
Labels
More info neededawsBugs or features of importance to AWS CBMC usersBugs or features of importance to AWS CBMC users
Description
CBMC version: 5.29.0
Operating system: Ubuntu20
Exact command line resulting in the issue: See below
What behaviour did you expect: Test passes
What happened instead: Test fails
The modifications proposed in #6077 have shown the existence of a bug in CBMC. Currently, CBMC does not support calling __CPROVER_w_ok()
by passing a char
object as a parameter.
This bug causes problems in the regression/contracts/assigns_replace_03
test. Running the test outputs the following invariant violation report:
--- begin invariant violation report ---
Invariant check failed
File: ../../src/solvers/flattening/boolbv_width.cpp:197 function: get_entry
Condition: false
Reason: Unimplemented
Backtrace:
../../../build/bab/bin/cbmc(print_backtrace(std::ostream&)+0x3e) [0x129aedd]
../../../build/bab/bin/cbmc(get_backtrace[abi:cxx11]()+0x36) [0x129b088]
../../../build/bab/bin/cbmc(std::enable_if<std::is_base_of<invariant_failedt, invariant_failedt>::value, void>::type invariant_violated_structured<invariant_failedt, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x3c) [0xba91c7]
../../../build/bab/bin/cbmc() [0xba8a7f]
../../../build/bab/bin/cbmc(boolbv_widtht::get_entry(typet const&) const+0x121b) [0x109bc75]
../../../build/bab/bin/cbmc(boolbv_widtht::operator()(typet const&) const+0x23) [0xc0008b]
../../../build/bab/bin/cbmc(bv_pointerst::bv_pointers_widtht::operator()(typet const&) const+0x53) [0x10a1437]
../../../build/bab/bin/cbmc(bv_pointerst::boolbv_width(typet const&) const+0x2c) [0xc00b7e]
../../../build/bab/bin/cbmc(boolbvt::type_conversion(typet const&, std::vector<literalt, std::allocator<literalt> > const&, typet const&, std::vector<literalt, std::allocator<literalt> >&)+0x1a0) [0x109445c]
../../../build/bab/bin/cbmc(boolbvt::convert_bv_typecast(typecast_exprt const&)+0xb5) [0x109423d]
../../../build/bab/bin/cbmc(boolbvt::convert_bitvector(exprt const&)+0x47f) [0x1060265]
../../../build/bab/bin/cbmc(bv_pointerst::convert_bitvector(exprt const&)+0x18e7) [0x10a773d]
../../../build/bab/bin/cbmc(boolbvt::convert_bv(exprt const&, nonstd::optional_lite::optional<unsigned long>)+0xef) [0x105f82d]
../../../build/bab/bin/cbmc(boolbvt::convert_bv_typecast(typecast_exprt const&)+0x61) [0x10941e9]
../../../build/bab/bin/cbmc(boolbvt::convert_bitvector(exprt const&)+0x47f) [0x1060265]
../../../build/bab/bin/cbmc(bv_pointerst::convert_bitvector(exprt const&)+0x18e7) [0x10a773d]
../../../build/bab/bin/cbmc(boolbvt::convert_bv(exprt const&, nonstd::optional_lite::optional<unsigned long>)+0xef) [0x105f82d]
../../../build/bab/bin/cbmc(boolbvt::convert_bv_rel(binary_relation_exprt const&)+0xf0) [0x106d9d2]
../../../build/bab/bin/cbmc(boolbvt::convert_rest(exprt const&)+0x4cc) [0x10628ba]
../../../build/bab/bin/cbmc(bv_pointerst::convert_rest(exprt const&)+0x8ab) [0x10a2177]
../../../build/bab/bin/cbmc(prop_conv_solvert::convert_bool(exprt const&)+0x1507) [0x10e5b75]
../../../build/bab/bin/cbmc(prop_conv_solvert::convert(exprt const&)+0x181) [0x10e4597]
../../../build/bab/bin/cbmc(prop_conv_solvert::convert_bool(exprt const&)+0xef2) [0x10e5560]
../../../build/bab/bin/cbmc(prop_conv_solvert::convert(exprt const&)+0x181) [0x10e4597]
../../../build/bab/bin/cbmc(prop_conv_solvert::convert_bool(exprt const&)+0xb2e) [0x10e519c]
../../../build/bab/bin/cbmc(prop_conv_solvert::convert(exprt const&)+0x181) [0x10e4597]
../../../build/bab/bin/cbmc(prop_conv_solvert::convert_bool(exprt const&)+0xef2) [0x10e5560]
../../../build/bab/bin/cbmc(prop_conv_solvert::convert(exprt const&)+0x181) [0x10e4597]
../../../build/bab/bin/cbmc(prop_conv_solvert::set_equality_to_true(equal_exprt const&)+0x9c) [0x10e60a8]
../../../build/bab/bin/cbmc(prop_conv_solvert::add_constraints_to_prop(exprt const&, bool)+0x565) [0x10e6695]
../../../build/bab/bin/cbmc(prop_conv_solvert::set_to(exprt const&, bool)+0x43) [0x10e70e7]
../../../build/bab/bin/cbmc(boolbvt::set_to(exprt const&, bool)+0x18e) [0x10645c0]
../../../build/bab/bin/cbmc(decision_proceduret::set_to_true(exprt const&)+0x2c) [0x104fff6]
../../../build/bab/bin/cbmc(symex_target_equationt::convert_assignments(decision_proceduret&)+0x130) [0xdfbcbe]
../../../build/bab/bin/cbmc(symex_target_equationt::convert_without_assertions(decision_proceduret&)+0x69) [0xdfb9cd]
../../../build/bab/bin/cbmc(symex_target_equationt::convert(decision_proceduret&)+0x2f) [0xdfba91]
../../../build/bab/bin/cbmc(convert_symex_target_equation(symex_target_equationt&, decision_proceduret&, message_handlert&)+0x80) [0xbd5f86]
../../../build/bab/bin/cbmc(prepare_property_decider(std::unordered_map<dstringt, property_infot, std::hash<dstringt>, std::equal_to<dstringt>, std::allocator<std::pair<dstringt const, property_infot> > >&, symex_target_equationt&, goto_symex_property_decidert&, ui_message_handlert&)+0xeb) [0xbd71aa]
../../../build/bab/bin/cbmc(multi_path_symex_checkert::prepare_property_decider(std::unordered_map<dstringt, property_infot, std::hash<dstringt>, std::equal_to<dstringt>, std::allocator<std::pair<dstringt const, property_infot> > >&)+0x40) [0xbe8ef6]
../../../build/bab/bin/cbmc(multi_path_symex_checkert::operator()(std::unordered_map<dstringt, property_infot, std::hash<dstringt>, std::equal_to<dstringt>, std::allocator<std::pair<dstringt const, property_infot> > >&)+0x1c2) [0xbe8dd2]
../../../build/bab/bin/cbmc(all_properties_verifier_with_trace_storaget<multi_path_symex_checkert>::operator()()+0x45) [0xbc5f2d]
../../../build/bab/bin/cbmc(cbmc_parse_optionst::doit()+0x192e) [0xbb3384]
../../../build/bab/bin/cbmc(parse_options_baset::main()+0x106) [0x12bf8fc]
../../../build/bab/bin/cbmc(main+0x46) [0xba87fd]
/lib64/libc.so.6(__libc_start_main+0xea) [0x7fd80685d0ba]
../../../build/bab/bin/cbmc(_start+0x2a) [0xba871a]
--- end invariant violation report ---
Note 1: If we change type of the char
variable to int
and re-run the test, the test passes.
Note 2: if we change the char **
to char *
, the pass still fails and outputs the same error.
Metadata
Metadata
Assignees
Labels
More info neededawsBugs or features of importance to AWS CBMC usersBugs or features of importance to AWS CBMC users