From b49e842ee29ece9ef25fe4db6af71fcfb2a26ea0 Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Thu, 14 Jun 2018 17:39:39 +0200 Subject: [PATCH] Wait for the forked process at mosst double amount of the timeout, then kill it. --- .../inf/st/mquat/benchmark/FullBenchmarkMain.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/FullBenchmarkMain.java b/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/FullBenchmarkMain.java index 40d0bc7..805ff1a 100644 --- a/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/FullBenchmarkMain.java +++ b/jastadd-mquat-benchmark/src/main/java/de/tudresden/inf/st/mquat/benchmark/FullBenchmarkMain.java @@ -16,6 +16,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -88,7 +89,18 @@ public class FullBenchmarkMain { pb.redirectError(ProcessBuilder.Redirect.INHERIT); pb.directory(currentDir); Process p = pb.start(); - p.waitFor(); + boolean finishedInTime = p.waitFor(settings.basic.timeoutValue * 2, + TimeUnit.valueOf(settings.basic.timeoutUnit)); + if(!finishedInTime) { + p.destroy(); + p.destroyForcibly(); + // wait for the process to actually end + p.waitFor(); + // skip remaining repetitions, as this timeout is considered as an error + if (settings.skipOnError) { + continue nextSolver; + } + } } catch (IOException | InterruptedException e) { e.printStackTrace(); if (settings.skipOnError) { -- GitLab