-
Couldn't load subscription status.
- Fork 1.6k
Description
The following input (possibly bogus, I'm new to this) causes a segfault for me (Linux/x86_64), revision 7f6ef0b:
(set-option :pp.bv-literals true)
(declare-const pal (_ BitVec 128))
(declare-const pixels (Array Int (_ BitVec 8)))
(define-fun p0 ((x Int)) (_ BitVec 8)
(bvor (bvlshr (bvand (select pixels x) #x80) #x04)
(bvor (bvlshr (bvand (select pixels x) #x20) #x03)
(bvor (bvlshr (bvand (select pixels x) #x08) #x02)
(bvlshr (bvand (select pixels x) #x02) #x01)))))
(define-fun p1 ((x Int)) (_ BitVec 8)
(bvor (bvlshr (bvand (select pixels x) #x40) #x03)
(bvor (bvlshr (bvand (select pixels x) #x10) #x02)
(bvor (bvlshr (bvand (select pixels x) #x04) #x01)
(bvand (select pixels x) #x01)))))
(define-fun p2 ((x Int)) (_ BitVec 8)
(bvor (bvlshr (bvand (select pixels x) #x20) #x02)
(bvor (bvlshr (bvand (select pixels x) #x08) #x01)
(bvor (bvand (select pixels x) #x02) #x01))))
(define-fun p3 ((x Int)) (_ BitVec 8)
(bvor (bvlshr (bvand (select pixels x) #x10) #x01)
(bvor (bvand (select pixels x) #x04)
(bvor (bvshl (bvand (select pixels x) #x01) #x01)
#x01))))
(define-fun pal_lookup ((x (_ BitVec 8))) (_ BitVec 8)
((_ extract 7 0) (bvlshr pal (bvshl x #x03))))
(assert (= (pal_lookup (p0 0)) (_ bv0 8)))
(assert (= (pal_lookup (p1 0)) (_ bv0 8)))
(assert (= (pal_lookup (p2 0)) (_ bv0 8)))
(assert (= (pal_lookup (p3 0)) (_ bv0 8)))
(assert (= (pal_lookup (p0 1)) (_ bv0 8)))
(assert (= (pal_lookup (p1 1)) (_ bv1 8)))
(assert (= (pal_lookup (p2 1)) (_ bv0 8)))
(assert (= (pal_lookup (p3 1)) (_ bv1 8)))
(assert (= (pal_lookup (p0 2)) (_ bv1 8)))
(assert (= (pal_lookup (p1 2)) (_ bv1 8)))
(assert (= (pal_lookup (p2 2)) (_ bv1 8)))
(assert (= (pal_lookup (p3 2)) (_ bv1 8)))
(assert (= (pal_lookup (p0 3)) (_ bv1 8)))
(assert (= (pal_lookup (p1 3)) (_ bv3 8)))
(assert (= (pal_lookup (p2 3)) (_ bv1 8)))
(assert (= (pal_lookup (p3 3)) (_ bv3 8)))
(assert (= (pal_lookup (p0 4)) (_ bv3 8)))
(assert (= (pal_lookup (p1 4)) (_ bv3 8)))
(assert (= (pal_lookup (p2 4)) (_ bv3 8)))
(assert (= (pal_lookup (p3 4)) (_ bv3 8)))
(assert (= (pal_lookup (p0 5)) (_ bv2 8)))
(assert (= (pal_lookup (p1 5)) (_ bv3 8)))
(assert (= (pal_lookup (p2 5)) (_ bv2 8)))
(assert (= (pal_lookup (p3 5)) (_ bv3 8)))
(assert (= (pal_lookup (p0 6)) (_ bv2 8)))
(assert (= (pal_lookup (p1 6)) (_ bv2 8)))
(assert (= (pal_lookup (p2 6)) (_ bv2 8)))
(assert (= (pal_lookup (p3 6)) (_ bv2 8)))
(assert (= (pal_lookup (p0 7)) (_ bv6 8)))
(assert (= (pal_lookup (p1 7)) (_ bv2 8)))
(assert (= (pal_lookup (p2 7)) (_ bv6 8)))
(assert (= (pal_lookup (p3 7)) (_ bv2 8)))
(assert (= (pal_lookup (p0 8)) (_ bv6 8)))
(assert (= (pal_lookup (p1 8)) (_ bv6 8)))
(assert (= (pal_lookup (p2 8)) (_ bv6 8)))
(assert (= (pal_lookup (p3 8)) (_ bv6 8)))
(assert (= (pal_lookup (p0 9)) (_ bv6 8)))
(assert (= (pal_lookup (p1 9)) (_ bv6 8)))
(assert (= (pal_lookup (p2 9)) (_ bv6 8)))
(assert (= (pal_lookup (p3 9)) (_ bv4 8)))
(assert (= (pal_lookup (p0 10)) (_ bv6 8)))
(assert (= (pal_lookup (p1 10)) (_ bv4 8)))
(assert (= (pal_lookup (p2 10)) (_ bv6 8)))
(assert (= (pal_lookup (p3 10)) (_ bv4 8)))
(assert (= (pal_lookup (p0 11)) (_ bv6 8)))
(assert (= (pal_lookup (p1 11)) (_ bv4 8)))
(assert (= (pal_lookup (p2 11)) (_ bv5 8)))
(assert (= (pal_lookup (p3 11)) (_ bv4 8)))
(assert (or (and (= (pal_lookup (p0 12)) (_ bv5 8))
(= (pal_lookup (p1 12)) (_ bv4 8))
(= (pal_lookup (p2 12)) (_ bv1 8))
(= (pal_lookup (p3 12)) (_ bv4 8)))
(and (= (pal_lookup (p0 12)) (_ bv1 8))
(= (pal_lookup (p1 12)) (_ bv4 8))
(= (pal_lookup (p2 12)) (_ bv5 8))
(= (pal_lookup (p3 12)) (_ bv4 8)))))
(assert (= (pal_lookup (p0 13)) (_ bv4 8)))
(assert (= (pal_lookup (p1 13)) (_ bv4 8)))
(assert (= (pal_lookup (p2 13)) (_ bv4 8)))
(assert (= (pal_lookup (p3 13)) (_ bv4 8)))
(assert (= (pal_lookup (p0 14)) (_ bv4 8)))
(assert (= (pal_lookup (p1 14)) (_ bv0 8)))
(assert (= (pal_lookup (p2 14)) (_ bv4 8)))
(assert (= (pal_lookup (p3 14)) (_ bv0 8)))
(assert (= (pal_lookup (p0 15)) (_ bv0 8)))
(assert (= (pal_lookup (p1 15)) (_ bv0 8)))
(assert (= (pal_lookup (p2 15)) (_ bv0 8)))
(assert (= (pal_lookup (p3 15)) (_ bv0 8)))
(check-sat)
(get-model)
(echo "pal:")
(eval (pal_lookup 0))
(eval (pal_lookup 1))
(eval (pal_lookup 2))
(eval (pal_lookup 3))
(eval (pal_lookup 4))
(eval (pal_lookup 5))
(eval (pal_lookup 6))
(eval (pal_lookup 7))
(eval (pal_lookup 8))
(eval (pal_lookup 9))
(eval (pal_lookup 10))
(eval (pal_lookup 11))
(eval (pal_lookup 12))
(eval (pal_lookup 13))
(eval (pal_lookup 14))
(eval (pal_lookup 15))
(echo "colours:")
(eval (select pixels 0))
(eval (select pixels 1))
(eval (select pixels 2))
(eval (select pixels 3))
(eval (select pixels 4))
(eval (select pixels 5))
(eval (select pixels 6))
(eval (select pixels 7))
(eval (select pixels 8))
(eval (select pixels 9))
(eval (select pixels 10))
(eval (select pixels 11))
(eval (select pixels 12))
(eval (select pixels 13))
(eval (select pixels 14))
(eval (select pixels 15))
(eval (select pixels 16))
(eval (select pixels 17))
(eval (select pixels 18))
Here's a backtrace:
#0 0x0000000000d0b274 in bool_rewriter::mk_flat_or_core(unsigned int, expr* const*, obj_ref<expr, ast_manager>&) ()
#1 0x0000000000a3ddfd in basic_simplifier_plugin::mk_or(expr_, expr_, obj_ref<expr, ast_manager>&) ()
#2 0x00000000009bfcaf in bit_blaster_tpl<bit_blaster_cfg>::mk_lshr(unsigned int, expr* const_, expr_ const*, ref_vector<expr, ast_manager>&) ()
#3 0x00000000008399dc in smt::theory_bv::internalize_lshr(app*) ()
#4 0x000000000083ae0b in smt::theory_bv::internalize_term(app*) ()
#5 0x00000000008177a6 in smt::context::internalize(expr*, bool) ()
#6 0x0000000000832309 in smt::theory_bv::process_args(app*) ()
#7 0x00000000008380a3 in smt::theory_bv::internalize_extract(app*) ()
#8 0x000000000083ae83 in smt::theory_bv::internalize_term(app*) ()
#9 0x0000000000817208 in smt::context::internalize_formula_core(app*, bool) ()
#10 0x00000000008165bc in smt::context::internalize_formula(expr*, bool) ()
#11 0x0000000000817c70 in smt::context::assert_default(expr_, app_) ()
#12 0x0000000000818191 in smt::context::internalize_assertion(expr_, app_, unsigned int) ()
#13 0x00000000007f61cd in smt::context::internalize_assertions() ()
#14 0x00000000007fedc4 in smt::context::setup_and_check(bool) ()
#15 0x00000000007b2d4e in smt_tactic::operator()(ref const&, sref_buffer<goal, 16u>&, ref<model_converter>&, ref<proof_converter>&, obj_ref<dependency_manager<ast_manager::expr_dependency_config>::dependency, ast_manager>&) ()
#16 0x0000000000c89f34 in and_then_tactical::operator()(ref const&, sref_buffer<goal, 16u>&, ref<model_converter>&, ref<proof_converter>&, obj_ref<dependency_manager<ast_manager::expr_dependency_config>::dependency, ast_manager>&) ()
#17 0x0000000000c7ab34 in exec(tactic&, ref const&, sref_buffer<goal, 16u>&, ref<model_converter>&, ref<proof_converter>&, obj_ref<dependency_manager<ast_manager::expr_dependency_config>::dependency, ast_manager>&) ()
#18 0x0000000000c7af89 in check_sat(tactic&, ref&, ref&, obj_ref<app, ast_manager>&, obj_ref<dependency_manager<ast_manager::expr_dependency_config>::dependency, ast_manager>&, std::string&) ()
#19 0x0000000000b3d6c5 in tactic2solver::check_sat_core(unsigned int, expr* const*) ()
#20 0x0000000000b3c5a6 in solver_na2as::check_sat(unsigned int, expr* const*) ()
#21 0x0000000000b407ce in combined_solver::check_sat(unsigned int, expr* const*)
()
#22 0x0000000000a80e51 in cmd_context::check_sat(unsigned int, expr* const*) ()
#23 0x0000000000a6c440 in smt2::parser::parse_check_sat() ()
#24 0x0000000000a745e8 in smt2::parser::operator()() ()
#25 0x0000000000a651c8 in parse_smt2_commands(cmd_context&, std::istream&, bool,
params_ref const&) ()
#26 0x000000000041f75e in read_smtlib2_commands(char const*) ()
#27 0x000000000040cfe3 in main ()