[Soot-list] Soot-list Digest, Vol 51, Issue 29
LIU Peng
lpxz at ust.hk
Sat Aug 1 10:35:43 EDT 2009
Hello :
I met with an exception while analyzing programs written using Aspectj.
I find where it bring me an exception, But I do not why such case happens.
Can you help me understand it?
Trace:
java.lang.RuntimeException: Attempt to create VarNode of type bottom_type
at soot.jimple.spark.pag.VarNode.<init>(VarNode.java:90)
at soot.jimple.spark.pag.LocalVarNode.<init>(LocalVarNode.java:43)
at soot.jimple.spark.pag.PAG.makeLocalVarNode(PAG.java:499)
at
soot.jimple.spark.builder.MethodNodeFactory.caseLocal(MethodNodeFactory.java:217)
at soot.jimple.internal.JimpleLocal.apply(JimpleLocal.java:135)
at
soot.jimple.spark.builder.MethodNodeFactory$1.caseAssignStmt(MethodNodeFactory.java:75)
at soot.jimple.internal.JAssignStmt.apply(JAssignStmt.java:236)
at
soot.jimple.spark.builder.MethodNodeFactory.handleStmt(MethodNodeFactory.java:67)
at soot.jimple.spark.pag.MethodPAG.buildNormal(MethodPAG.java:167)
at soot.jimple.spark.pag.MethodPAG.build(MethodPAG.java:133)
at
soot.jimple.spark.solver.OnFlyCallGraph.processReachables(OnFlyCallGraph.java:64)
at soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:56)
at
soot.jimple.spark.solver.PropWorklist.handleVarNode(PropWorklist.java:125)
at soot.jimple.spark.solver.PropWorklist.propagate(PropWorklist.java:54)
at
soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:152)
at soot.SceneTransformer.transform(SceneTransformer.java:39)
at soot.Transform.apply(Transform.java:89)
at soot.RadioScenePack.internalApply(RadioScenePack.java:58)
at
soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:48)
at soot.Pack.apply(Pack.java:114)
at soot.PackManager.runWholeProgramPacks(PackManager.java:409)
at soot.PackManager.runPacks(PackManager.java:330)
I find the source of the exception:
l0
<dstm2.benchmark.aj.List: void init()>
l0 in init() is like this:
protected void init()
{
bottom_type l0;
l3 = newarray (java.lang.Object)[1];
l3[0] = l0;
$r1 = new dstm2.benchmark.aj.List$AjcClosure1;
specialinvoke $r1.<dstm2.benchmark.aj.List$AjcClosure1: void
<init>(java.lang.Object[])>(l3);
...
}
ajcClosure.<init>() is used to initialize ajcClosure, and l3 is expected
to initialize the state of ajcClosure.
But why does l0 is bottom_type, I am not familiar with the underlying
matters of AOP, can you give me an example when this happens?
Thanks
Regards
Peng
More information about the Soot-list
mailing list