Fix a hangup in yosys-smtbmc error handling
authorClifford Wolf <clifford@clifford.at>
Sun, 4 Mar 2018 20:13:30 +0000 (21:13 +0100)
committerClifford Wolf <clifford@clifford.at>
Sun, 4 Mar 2018 20:13:30 +0000 (21:13 +0100)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
backends/smt2/smtio.py

index e6f80d0ac4deb0f19ca504e583ad2a8b27ca3d24..184a11817638986b43888723fbf2787fd58cbc35 100644 (file)
@@ -47,7 +47,7 @@ def sig_handler(signum, frame):
         got_term_signal = True
     for p in running_solvers.values():
         os.killpg(os.getpgid(p.pid), signal.SIGTERM)
-    sys.exit(0)
+    sys.exit(1)
 
 signal.signal(signal.SIGINT, sig_handler)
 signal.signal(signal.SIGHUP, sig_handler)
@@ -571,12 +571,14 @@ class SmtIo:
             if count_brackets == 0:
                 break
             if self.solver != "dummy" and self.p.poll():
-                print("SMT Solver terminated unexpectedly: %s" % "".join(stmt))
+                print("SMT Solver terminated unexpectedly: %s" % "".join(stmt), flush=True)
                 sys.exit(1)
 
         stmt = "".join(stmt)
         if stmt.startswith("(error"):
-            print("SMT Solver Error: %s" % stmt, file=sys.stderr)
+            print("SMT Solver Error: %s" % stmt, file=sys.stderr, flush=True)
+            if self.solver != "dummy":
+                self.p_close()
             sys.exit(1)
 
         return stmt