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

Jonas Lundberg jonasl at msi.vxu.se
Wed May 24 12:09:35 EDT 2006


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


More information about the Soot-list mailing list