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