[Soot-list] Incompatible Spark Options (or a bug?)

Ondrej Lhotak olhotak at uwaterloo.ca
Wed May 24 12:08:35 EDT 2006


Hi Jonas...

This is a bug with a very easy fix. I have fixed it and committed the
fix to the Subversion repository revision 2418. Thanks for the clear bug
report.

Ondrej

On Wed, May 24, 2006 at 06:09:35PM +0200, Jonas Lundberg wrote:
> Hi,
> 
> I try to configure Spark to run a "pure" points-to analysis where all 
> types of objects (including string objects) are treated
> equal. When using the two options on-fly-cg:true,string-constants:true  
> at the same time, the analysis ends with a 
> StringIndexOutOfBoundsException. (The two variants 
> on-fly-cg:true,string-constants:false and 
> on-fly-cg:false,string-constants:true run without any exception.)
> 
> Is it two incompatible options or a bug?
> 
> This is what happens when analyzing javac1.3.1:
> =================================
> C:\test_suite\jdk1.3.1>java -Xmx512m soot.Main -p cg.spark 
> verbose:true,on-fly-cg:true,string-constants:true
>                                                                            
> -w -cp .\jre\lib\rt.jar;.\lib\tools.jar  com.sun.tools.javac.Main
> Soot started on Wed May 24 17:33:47 CEST 2006
> [Call Graph] For information on where the call graph may be incomplete, 
> use the verbose option to the cg phase.
> Total methods: 7450
> Initially reachable methods: 76
> Classes with at least one reachable method: 33
> [Spark] Pointer Assignment Graph in 2.8 seconds.
> Total types: 896
> [Spark] Type masks in 0.1 seconds.
> VarNodes: 363
> FieldRefNodes: 36
> AllocNodes: 134
> Cleaning up graph for merged nodes
> Done cleaning up graph for merged nodes
> [Spark] Pointer Graph simplified in 0.0 seconds.
> Worklist has 135 nodes.
> Now handling field references
> Worklist has 1380 nodes.
> Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 
> String index out of range: 0
>        at java.lang.String.charAt(Unknown Source)
>        at 
> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.addStringConstant(OnFlyCallGraphBuilder.java:134)
>        at 
> soot.jimple.spark.solver.OnFlyCallGraph$2.visit(OnFlyCallGraph.java:113)
>        at 
> soot.jimple.spark.sets.HybridPointsToSet.forall(HybridPointsToSet.java:148)
>        at 
> soot.jimple.spark.solver.OnFlyCallGraph.updatedNode(OnFlyCallGraph.java:109)
>        at 
> soot.jimple.spark.solver.PropWorklist.handleVarNode(PropWorklist.java:126)
>        at 
> soot.jimple.spark.solver.PropWorklist.propagate(PropWorklist.java:55)
>        at 
> soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:121)
>        at soot.SceneTransformer.transform(SceneTransformer.java:39)
>        at soot.Transform.apply(Transform.java:89)
>        at soot.RadioScenePack.internalApply(RadioScenePack.java:60)
>        at 
> soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:40)
>        at soot.Pack.apply(Pack.java:110)
>        at soot.PackManager.runWholeProgramPacks(PackManager.java:375)
>        at soot.PackManager.runPacks(PackManager.java:321)
>        at soot.Main.run(Main.java:203)
>        at soot.Main.main(Main.java:146)
>        
> Any help is appreciated - Jonas Lundberg
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> 


More information about the Soot-list mailing list