From 29dcd6133fd1f6f90d099e605759140fa1b52a1c Mon Sep 17 00:00:00 2001 From: Chantal Keller Date: Tue, 30 Jun 2020 13:02:54 +0200 Subject: Empty bit-vectors are not valid in SMT (fixes #76) --- src/trace/smtAtom.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/trace/smtAtom.ml b/src/trace/smtAtom.ml index c20a75d..ae44b8d 100644 --- a/src/trace/smtAtom.ml +++ b/src/trace/smtAtom.ml @@ -649,7 +649,7 @@ module Atom = to_smt_atom (atom h) and to_smt_atom = function - | Acop (CO_BV bv) -> Format.fprintf fmt "#b%a" bv_to_smt bv + | Acop (CO_BV bv) -> if List.length bv = 0 then Structures.error "Empty bit-vectors are not valid in SMT" else Format.fprintf fmt "#b%a" bv_to_smt bv | Acop _ as a -> to_smt_int fmt (compute_int a) | Auop (op,h) -> to_smt_uop op h | Abop (op,h1,h2) -> to_smt_bop op h1 h2 -- cgit From 26c639d438169530275ff7e48a55355deb7047df Mon Sep 17 00:00:00 2001 From: Chantal Keller Date: Tue, 30 Jun 2020 13:03:56 +0200 Subject: Cannot print stderr when calling CVC4 --- src/smtlib2/smtlib2_solver.ml | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/smtlib2/smtlib2_solver.ml b/src/smtlib2/smtlib2_solver.ml index 8ae7202..aee9a81 100644 --- a/src/smtlib2/smtlib2_solver.ml +++ b/src/smtlib2/smtlib2_solver.ml @@ -95,7 +95,7 @@ let read_check_result s = let send_command s cmd read = eprintf "%s@." cmd; - let err_p1 = Unix.((fstat s.stderr).st_size) in + (* let err_p1 = Unix.((fstat s.stderr).st_size) in *) try let in_ch = Unix.out_channel_of_descr s.stdin in let fmt = formatter_of_out_channel in_ch in @@ -103,16 +103,18 @@ let send_command s cmd read = pp_print_newline fmt (); read s with e -> - let err_p2 = Unix.((fstat s.stderr).st_size) in - let len = err_p2 - err_p1 in - (* Was something written to stderr? *) - if len <> 0 then begin - let buf = Bytes.create err_p2 in - Unix.read s.stderr buf 0 err_p2 |> ignore; - let err_msg = Bytes.sub_string buf err_p1 len in - Structures.error ("Solver error: "^err_msg); - end - else (kill s; raise e) + (* After the exception, the file descriptor is invalid *) + (* let err_p2 = Unix.((fstat s.stderr).st_size) in + * let len = err_p2 - err_p1 in + * (\* Was something written to stderr? *\) + * if len <> 0 then begin + * let buf = Bytes.create err_p2 in + * Unix.read s.stderr buf 0 err_p2 |> ignore; + * let err_msg = Bytes.sub_string buf err_p1 len in + * Structures.error ("Solver error: "^err_msg); + * end + * else (kill s; raise e) *) + kill s; raise e let set_option s name b = -- cgit