[Soot-list] RuntimeException in Shimple body creation

Michael Faes rolve at trick17.ch
Mon Mar 11 10:32:48 EDT 2013


Hi everyone,

I just ran into a runtime exception in Soot and wondered whether someone 
can make any sense out of it:

Exception in thread "main" java.lang.RuntimeException: Assertion failed.
   at 
soot.shimple.internal.PhiNodeManager.dominates(PhiNodeManager.java:359)
   at 
soot.shimple.internal.PhiNodeManager.trimPhiNode(PhiNodeManager.java:288)
   at 
soot.shimple.internal.PhiNodeManager.trimExceptionalPhiNodes(PhiNodeManager.java:227)
   at 
soot.shimple.internal.ShimpleBodyBuilder.transform(ShimpleBodyBuilder.java:116)
   at soot.shimple.ShimpleBody.rebuild(ShimpleBody.java:133)
   at soot.shimple.ShimpleBody.<init>(ShimpleBody.java:102)
   at soot.shimple.Shimple.newBody(Shimple.java:88)
   at soot.PackManager.runBodyPacks(PackManager.java:808)
   at soot.PackManager.runBodyPacks(PackManager.java:506)
   at soot.PackManager.runBodyPacks(PackManager.java:413)
   at soot.PackManager.runPacksNormally(PackManager.java:390)
   at soot.PackManager.runPacks(PackManager.java:335)
   at soot.Main.run(Main.java:198)
   at soot.Main.main(Main.java:141)
...

As you can see, the Shimple body creation fails. I hunted down the 
problematic class and simplified it as much as I could:

public class ShimpleTest {

     public static void main(final String[] args) {
         foo();
     }

     private static final float foo() {
         try {
             return bar() ? 0 : baz();
         } catch(final Exception e) {
             return 0;
         }
     }

     private static boolean bar() {
         return false;
     }

     private static int baz() {
         return 0;
     }
}

Running Soot (nightly build from a few days ago) with "-f S" produces 
the exception.

Could someone help me out with this? I already ran into this problem 
with two libraries that I need to analyze.

Best regards,
Michael


More information about the Soot-list mailing list