[abc] Possible soot bug: \Nested Labeled continues cause an NPE in soot

From: Neil Ongkingco <neil.ongkingco@keb.ox.ac.uk>
Date: Wed Dec 07 2005 - 14:59:02 GMT

The attached code causes an exception in soot. Also attached is the
stack trace at the exception. I can code around this for now, I'm
emailing it just so we don't forget.

class Main {

        void f(boolean b) {
l1:
                for (;;) {
                        if (b) {
                                continue l1;
                        }
l2:
                        for (;;) {
                                continue l2;
                        }
                }
        }

//This code also causes the exception, but only if the continue
//in the inner loop is to m1. If it is to m2, it compiles fine
        void g(boolean b) {
m1:
                for (;;) {
                        if (b) {
                                continue;
                        }
m2:
                        for (;;) {
                                continue m1;
                        }
                }

        }
}

Soot started on Wed Dec 07 14:54:26 GMT 2005
java.lang.NullPointerException
        at soot.toolkits.graph.UnitGraph.buildUnexceptionalEdges(UnitGraph.java:129)
        at soot.toolkits.graph.ExceptionalUnitGraph.initialize(ExceptionalUnitGraph.java:246)
        at soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:148)
        at soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:180)
        at soot.jimple.toolkits.base.Aggregator.internalAggregate(Aggregator.java:114)
        at soot.jimple.toolkits.base.Aggregator.internalTransform(Aggregator.java:95)
        at soot.BodyTransformer.transform(BodyTransformer.java:51)
        at soot.Transform.apply(Transform.java:104)
        at soot.JavaToJimpleBodyPack.applyPhaseOptions(JavaToJimpleBodyPack.java:63)
        at soot.JavaToJimpleBodyPack.internalApply(JavaToJimpleBodyPack.java:92)
        at soot.Pack.apply(Pack.java:120)
        at soot.javaToJimple.PolyglotMethodSource.getBody(PolyglotMethodSource.java:53)
        at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:80)
        at soot.SootMethod.retrieveActiveBody(SootMethod.java:304)
        at soot.PackManager.retrieveAllBodies(PackManager.java:727)
        at soot.PackManager.runPacks(PackManager.java:306)
        at soot.Main.run(Main.java:179)
        at soot.Main.main(Main.java:153)
Exception in thread "main"
Received on Wed Dec 7 15:01:41 2005

This archive was generated by hypermail 2.1.8 : Fri Dec 09 2005 - 01:20:08 GMT