aboutsummaryrefslogtreecommitdiffstats
path: root/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/solver/StormDftHandler.xtend
diff options
context:
space:
mode:
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.xtend16
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
8import java.io.InputStream 8import java.io.InputStream
9import java.io.InputStreamReader 9import java.io.InputStreamReader
10import java.util.regex.Pattern 10import java.util.regex.Pattern
11import jnr.constants.platform.Signal
12import org.apache.commons.lang.SystemUtils
13 11
14class StormDftException extends RuntimeException { 12class 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 }