diff options
Diffstat (limited to 'Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.xtend')
-rw-r--r-- | Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.xtend | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.xtend index 91c6a0d0..a250a955 100644 --- a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.xtend +++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.xtend | |||
@@ -8,8 +8,6 @@ import java.io.IOException | |||
8 | import java.io.InputStream | 8 | import java.io.InputStream |
9 | import java.io.InputStreamReader | 9 | import java.io.InputStreamReader |
10 | import java.util.regex.Pattern | 10 | import java.util.regex.Pattern |
11 | import jnr.constants.platform.Signal | ||
12 | import org.apache.commons.lang.SystemUtils | ||
13 | 11 | ||
14 | class StormDftException extends RuntimeException { | 12 | class StormDftException extends RuntimeException { |
15 | new(String s) { | 13 | new(String s) { |
@@ -29,8 +27,9 @@ class StormDftHandler { | |||
29 | static val RESULT_REGEX = '''^Result:\s*\[(?:(?<«SINGLE_RESULT_GROUP»>«DOUBLE_REGEX»)|\((?<«LOWER_BOUND_GROUP»>«DOUBLE_REGEX»),\s*(?<«UPPER_BOUND_GROUP»>«DOUBLE_REGEX»)\))\]''' | 27 | static val RESULT_REGEX = '''^Result:\s*\[(?:(?<«SINGLE_RESULT_GROUP»>«DOUBLE_REGEX»)|\((?<«LOWER_BOUND_GROUP»>«DOUBLE_REGEX»),\s*(?<«UPPER_BOUND_GROUP»>«DOUBLE_REGEX»)\))\]''' |
30 | static val RESULT_PATTERN = Pattern.compile(RESULT_REGEX) | 28 | static val RESULT_PATTERN = Pattern.compile(RESULT_REGEX) |
31 | 29 | ||
32 | // See http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/jdk7-b147/src/solaris/native/java/lang/UNIXProcess_md.c#l332 | 30 | static val SIGNAL_EXIT_VALUE_OFFSET = 0x80 |
33 | static val SIGNAL_EXIT_VALUE_OFFSET = if(SystemUtils.IS_OS_SOLARIS) 0 else 0x80 | 31 | static val SIGXCPU = 24 |
32 | static val SIGXFSZ = 25 | ||
34 | 33 | ||
35 | static val STORM_GENERAL_ERROR = (-1).bitwiseAnd(0xff) | 34 | static val STORM_GENERAL_ERROR = (-1).bitwiseAnd(0xff) |
36 | static val STORM_TIMEOUT = (-2).bitwiseAnd(0xff) | 35 | static val STORM_TIMEOUT = (-2).bitwiseAnd(0xff) |
@@ -166,18 +165,15 @@ class StormDftHandler { | |||
166 | case STORM_GENERAL_ERROR: | 165 | case STORM_GENERAL_ERROR: |
167 | throw new StormDftException("Storm error: " + error) | 166 | throw new StormDftException("Storm error: " + error) |
168 | case STORM_TIMEOUT, | 167 | case STORM_TIMEOUT, |
169 | case SIGNAL_EXIT_VALUE_OFFSET + Signal.SIGXCPU.intValue: | 168 | case SIGNAL_EXIT_VALUE_OFFSET + SIGXCPU: |
170 | ReliabilityResult.TIMEOUT | 169 | ReliabilityResult.TIMEOUT |
171 | case STORM_MEMOUT, | 170 | case STORM_MEMOUT, |
172 | case SIGNAL_EXIT_VALUE_OFFSET + Signal.SIGXFSZ.intValue: | 171 | case SIGNAL_EXIT_VALUE_OFFSET + SIGXFSZ: |
173 | ReliabilityResult.MEMOUT | 172 | ReliabilityResult.MEMOUT |
174 | default: { | 173 | default: { |
175 | if (exitValue > SIGNAL_EXIT_VALUE_OFFSET) { | 174 | if (exitValue > SIGNAL_EXIT_VALUE_OFFSET) { |
176 | val signalNumber = exitValue - SIGNAL_EXIT_VALUE_OFFSET | 175 | val signalNumber = exitValue - SIGNAL_EXIT_VALUE_OFFSET |
177 | val signal = Signal.values.findFirst[intValue == signalNumber] | 176 | throw new StormDftException("Storm unexpectedly killed by signal " + signalNumber + ": " + error) |
178 | if (signal !== null) { | ||
179 | throw new StormDftException("Storm unexpectedly killed by signal " + signal + ": " + error) | ||
180 | } | ||
181 | } | 177 | } |
182 | throw new StormDftException("Storm unexpectedly exit with status " + exitValue + ": " + error) | 178 | throw new StormDftException("Storm unexpectedly exit with status " + exitValue + ": " + error) |
183 | } | 179 | } |