[Soot-list] Possible bug in Dominators Analysis

Guillaume Salagnac Guillaume.Salagnac at imag.fr
Mon Aug 21 04:54:38 EDT 2006



Hi everyone,


I have an analysis algorithm that relies on loop information within  
methods: I need to know, for each statement, wether it is part of a  
loop body (i.e. wether it can be executed several times per method  
execution). To get this information, I used to query the results of  
the LoopFinder analysis provided with soot  
(soot.jimple.toolkits.annotation.logic.LoopFinder). However, on some  
methods I get an exception, which seems to come from the underlying  
dominators analysis (see trace 1). The same exception can be thrown  
with a more simple command line, on a trivial test case. (see trace  
2, and attached file).

Am I doing something wrong, or is this a bug in soot ? Maybe I missed  
something ?

Anyway, is there another (simple) way to get that loop information I  
am looking for ?


Any help would be greatly appreciated.
-G



trace 1:

Analyzing <aero.util.Connector: java.lang.String getStringPort()>...  
java.lang.RuntimeException: Expect one start node only.
         at soot.toolkits.graph.DominatorAnalysis.entryInitialFlow 
(DominatorAnalysis.java:147)
         at soot.toolkits.scalar.ForwardFlowAnalysis.doAnalysis 
(ForwardFlowAnalysis.java:100)
         at soot.toolkits.graph.DominatorAnalysis.<init> 
(DominatorAnalysis.java:50)
         at  
soot.jimple.toolkits.annotation.logic.LoopFinder.internalTransform 
(LoopFinder.java:42)
         at soot.BodyTransformer.transform(BodyTransformer.java:51)
         at soot.BodyTransformer.transform(BodyTransformer.java:58)
         at soot.BodyTransformer.transform(BodyTransformer.java:63)
         at madeja.analysis.pointerinterference.TribeAnalysis.analyze 
(TribeAnalysis.java:39)
         at madeja.analysis.AppAnalysis.internalTransform 
(AppAnalysis.java:47)
         at soot.SceneTransformer.transform(SceneTransformer.java:39)
         at soot.Transform.apply(Transform.java:89)
         at soot.ScenePack.internalApply(ScenePack.java:44)
         at soot.Pack.apply(Pack.java:110)
         at soot.PackManager.runWholeProgramPacks(PackManager.java:376)
         at soot.PackManager.runPacks(PackManager.java:321)
         at soot.Main.run(Main.java:203)
         at soot.Main.main(Main.java:146)
         at madeja.main.AbstractLauncher.launchSoot 
(AbstractLauncher.java:57)
         at madeja.main.AbstractLauncher.start(AbstractLauncher.java:70)
         at madeja.main.TribeMain.main(TribeMain.java:74)


trace 2:

$ java soot.Main -p jap.lit on TestCase
Soot started on Mon Aug 21 10:48:31 MEST 2006
Transforming TestCase...
Exception in thread "main" java.lang.RuntimeException: Expect one  
start node only.
         at soot.toolkits.graph.DominatorAnalysis.entryInitialFlow 
(DominatorAnalysis.java:147)
         at soot.toolkits.scalar.ForwardFlowAnalysis.doAnalysis 
(ForwardFlowAnalysis.java:100)
         at soot.toolkits.graph.DominatorAnalysis.<init> 
(DominatorAnalysis.java:50)
         at  
soot.jimple.toolkits.annotation.logic.LoopFinder.internalTransform 
(LoopFinder.java:42)
         at  
soot.jimple.toolkits.annotation.logic.LoopInvariantFinder.internalTransf 
orm(LoopInvariantFinder.java:47)
         at soot.BodyTransformer.transform(BodyTransformer.java:51)
         at soot.Transform.apply(Transform.java:104)
         at soot.BodyPack.internalApply(BodyPack.java:50)
         at soot.Pack.apply(Pack.java:120)
         at soot.PackManager.runBodyPacks(PackManager.java:686)
         at soot.PackManager.runBodyPacks(PackManager.java:396)
         at soot.PackManager.runBodyPacks(PackManager.java:340)
         at soot.PackManager.runPacks(PackManager.java:335)
         at soot.Main.run(Main.java:203)
         at soot.Main.main(Main.java:146)



-- 
Guillaume Salagnac
Doctorant, Laboratoire Vérimag, Grenoble.
Je sers la science et c'est ma joie.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: TestCase.java
Type: application/octet-stream
Size: 252 bytes
Desc: not available
Url : http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20060821/671162a8/TestCase.obj
-------------- next part --------------



More information about the Soot-list mailing list