[Soot-list] Bug in shimple transformation ?

Guillaume Salagnac guillaume.salagnac at imag.fr
Tue Oct 25 09:14:12 EDT 2005


Hi Navindra,

And thanks for the patch. Indeed, it solved my problem, and the  
shimple is now correctly generated for my test class. Actually, I did  
not compile the patch itself, but I downloaded the "nightly build"  
version of sootclasses.jar, which is labelled "2168", so I assume it  
includes the fix. By the way, thanks for the nightly builds beeing back.

However, I'm still not completely happy, because this new version of  
the code makes my main project crash. Here's an invocation of soot  
that illustrates the same problem :

java soot.Main -f S sun.security.provider.SeedGenerator

This class seems to live somewhere in the JRE (rt.jar),  but I did  
not find any Java source code for it, and I don't understand the  
thrown exception :

Exception in thread "main" java.lang.RuntimeException: Assertion  
failed:  Only one head expected.
         at  
soot.toolkits.graph.SimpleDominatorsAnalysis.entryInitialFlow 
(SimpleDominatorsFinder.java:180)
         at soot.toolkits.scalar.ForwardFlowAnalysis.doAnalysis 
(ForwardFlowAnalysis.java:100)
         at soot.toolkits.graph.SimpleDominatorsAnalysis.<init> 
(SimpleDominatorsFinder.java:158)
         at soot.toolkits.graph.SimpleDominatorsFinder.<init> 
(SimpleDominatorsFinder.java:52)
         at soot.toolkits.scalar.GuaranteedDefsAnalysis.<init> 
(GuaranteedDefs.java:82)
         at soot.toolkits.scalar.GuaranteedDefs.<init> 
(GuaranteedDefs.java:44)
         at soot.shimple.internal.PhiNodeManager.update 
(PhiNodeManager.java:63)
         at soot.shimple.internal.PhiNodeManager.insertTrivialPhiNodes 
(PhiNodeManager.java:79)
         at soot.shimple.internal.ShimpleBodyBuilder.transform 
(ShimpleBodyBuilder.java:104)
         at soot.shimple.ShimpleBody.rebuild(ShimpleBody.java:137)
         at soot.shimple.ShimpleBody.<init>(ShimpleBody.java:106)
         at soot.shimple.Shimple.newBody(Shimple.java:89)
         at soot.PackManager.runBodyPacks(PackManager.java:549)
         at soot.PackManager.runBodyPacks(PackManager.java:378)
         at soot.PackManager.runBodyPacks(PackManager.java:322)
         at soot.PackManager.runPacks(PackManager.java:317)
         at soot.Main.run(Main.java:179)
         at soot.Main.main(Main.java:153)


Do you have any clues about what to do ? As they need results from  
the JRE, my whole-shimple analyses do not run any more...



Thanks,
-G



More information about the Soot-list mailing list