diff --git a/src/testsuite/Testsuite.ml b/src/testsuite/Testsuite.ml
index f23799a5facaeba732b9c08b25090bb0ec6f042b..537e97e3f5cfa5371022749852c72d6bdb3102e8 100644
--- a/src/testsuite/Testsuite.ml
+++ b/src/testsuite/Testsuite.ml
@@ -38,8 +38,15 @@ let runSatCheck (_,logic,input) =
         Some 0
       in
       let (tbox, f) = CoAlgFormula.importQuery input in
-      let res = CoAlgReasoner.isSat logic nomTable tbox f in
-      if res then Sat else Unsat
+      (* isSat leaks tons of memory. Call it in new process to allow the OS to
+         reclaim that memory between calls. *)
+      match Unix.fork () with
+      | 0 -> let res = CoAlgReasoner.isSat logic nomTable tbox f in
+             if res then exit 0 else exit 1
+      | -1 -> raise (CoAlgFormula.CoAlgException "fork() failed")
+      | _ -> match Unix.wait () with
+             | (_,Unix.WEXITED 0) -> Sat
+             | _ -> Unsat
   with | Stream.Error _ -> ParseError
        | CoAlgFormula.CoAlgException _ -> ParseError