IntegerRange violates assertion when establishing a constraint

Issue #48 resolved
Frederik Buss-Joraschek created an issue

Using org.opalj.ai.domain.l1.DefaultIntegerValuesDomain

Analyzing

    public static void demonstratesIntFailure(int size) throws Exception {
        for (int i = 0; i < size; i++) {
            ;
        }
        for (int i = 0; i < size; i++) {
            ;
        }
    }

leads to a violated assertion: assert(lowerBound <= upperBound)

Stacktrace:

23[line=11]:IF_ICMPLT(true=18↑, false=↓) [
    operands:
        IntegerRange(lb=-2147483648, ub=0) [#87aac27]
        IntegerRange(lb=0, ub=0) [#3e3abc88]
    ;
    locals:
        0:IntegerRange(lb=-2147483648, ub=0) [#87aac27]
        1:IntegerRange(lb=0, ub=0) [#3e3abc88]
    ]
Exception in thread "main" org.opalj.ai.InterpretationFailedException$$anon$1: the interpretation failed
    at org.opalj.ai.InterpretationFailedException$.apply(InterpretationFailedException.scala:69)
    at org.opalj.ai.AI$class.continueInterpretation(AI.scala:2033)
    at org.opalj.ai.InterpretMethod$AI$.continueInterpretation(InterpretMethod.scala:49)
    at org.opalj.ai.AI$class.performInterpretation(AI.scala:292)
    at org.opalj.ai.InterpretMethod$AI$.performInterpretation(InterpretMethod.scala:49)
    at org.opalj.ai.AI$class.perform(AI.scala:267)
    at org.opalj.ai.InterpretMethod$AI$.perform(InterpretMethod.scala:49)
    at org.opalj.ai.AI$class.apply(AI.scala:137)
    at org.opalj.ai.InterpretMethod$AI$.apply(InterpretMethod.scala:49)
    at org.opalj.ai.InterpretMethod$.main(InterpretMethod.scala:184)
    at org.opalj.ai.InterpretMethod.main(InterpretMethod.scala)
Caused by: java.lang.AssertionError: assertion failed
    at org.opalj.ai.package$.assert(package.scala:80)
    at org.opalj.ai.domain.l1.DefaultIntegerRangeValues$IntegerRange.<init>(DefaultIntegerRangeValues.scala:85)
    at org.opalj.ai.domain.l1.DefaultIntegerRangeValues$class.IntegerRange(DefaultIntegerRangeValues.scala:161)
    at org.opalj.ai.domain.l1.DefaultConfigurableIntegerRangeValuesDomain.IntegerRange(DefaultIntegerRangeValuesDomain.scala:42)
    at org.opalj.ai.domain.l1.DefaultConfigurableIntegerRangeValuesDomain.IntegerRange(DefaultIntegerRangeValuesDomain.scala:42)
    at org.opalj.ai.domain.l1.IntegerRangeValues$class.intEstablishIsLessThan(IntegerRangeValues.scala:450)
    at org.opalj.ai.domain.l1.DefaultConfigurableIntegerRangeValuesDomain.org$opalj$ai$domain$l1$ConstraintsBetweenIntegerValues$$super$intEstablishIsLessThan(DefaultIntegerRangeValuesDomain.scala:42)
    at org.opalj.ai.domain.l1.ConstraintsBetweenIntegerValues$class.intEstablishIsLessThan(ConstraintsBetweenIntegerValues.scala:393)
    at org.opalj.ai.domain.l1.DefaultConfigurableIntegerRangeValuesDomain.intEstablishIsLessThan(DefaultIntegerRangeValuesDomain.scala:42)
    at org.opalj.ai.IntegerValuesDomain$$anonfun$IntIsLessThan$1.apply(IntegerValuesDomain.scala:278)
    at org.opalj.ai.IntegerValuesDomain$$anonfun$IntIsLessThan$1.apply(IntegerValuesDomain.scala:278)
    at org.opalj.ai.AI$class.ifTcmpXX$1(AI.scala:756)
    at org.opalj.ai.AI$class.continueInterpretation(AI.scala:1083)
    ... 9 more

Comments (4)

  1. Log in to comment