[Soot-list] using reachingObjects in Spark

Mayur Naik mhn at cs.stanford.edu
Wed Mar 30 23:17:14 EST 2005


OK, I figured the problem.  I'm calling reachingObjects(x, f) where x.f is 
of primitive type.

-- Mayur

On Wed, 30 Mar 2005, Mayur Naik wrote:

>
> I get the following error when I use Spark to compute the PointsToSet of x.f 
> where x is a Local and f is a SootField:
>
> Exception in thread "main" java.lang.NullPointerException
>        at soot.jimple.spark.pag.PAG$1.visit(PAG.java:173)
>        at 
> soot.jimple.spark.sets.HybridPointsToSet.forall(HybridPointsToSet.java:148)
>        at 
> soot.jimple.spark.sets.DoublePointsToSet.forall(DoublePointsToSet.java:62)
>        at soot.jimple.spark.pag.PAG.reachingObjectsInternal(PAG.java:171)
>        at soot.jimple.spark.pag.PAG.reachingObjects(PAG.java:148)
>        at soot.jimple.spark.pag.PAG.reachingObjects(PAG.java:385)
>        at Checker.internalTransform(Checker.java:31)
>        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:352)
>        at soot.PackManager.runPacks(PackManager.java:300)
>        at soot.Main.run(Main.java:179)
>        at soot.Main.main(Main.java:153)
>        at Main.main(Main.java:10)
>
> I use "-w -p cg.cha off -p cg.spark on" and get the points-to results using 
> pa = Scene.v().getPointsToAnalysis().  I then use pa.reachingObjects(x, f) to 
> get the PointsToSet of x.f, which throws the above exception.  The input 
> program is:
>
> public class Crash {
>    int f;
>    public void main() {
>        Crash x = new Crash();
>        x.f = 1;
>    }
> }
>
> The problem seems to be that the AllocNode::fields instance variable of the 
> AllocNode object created for the allocation site in 'main' above is null (no 
> AllocDotField is ever added to it), as a result of which the AllocNode::dot 
> method returns null when it searches for field 'f'.  This null return value 
> is deferenced on line 173 in PAG.java (in method reachingObjectsInternal). 
> Am I using the analysis incorrectly?
>
> Thanks,
> -- Mayur
>
>
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://www.sable.mcgill.ca/mailman/listinfo/soot-list
>


More information about the Soot-list mailing list