[Soot-list] ThreadLocalObjectsAnalysis problem

Richard L. Halpert richhal22 at gmail.com
Tue Jun 30 13:35:17 EDT 2009


Jeff,
ThreadLocalObjectsAnalysis only works on the Jimple IR.  This exception is
telling us that the code you're analyzing is in the Baf IR.  Normally,
unless you force it to use a different IR, Soot will transform your code
like this: Java/.class->Jimple->Baf->.class.  You have either skipped
Jimple, or you ran the ThreadLocalObjectsAnalysis too late in the Soot
transformation.  If you need to run something during the Jimple phase of
Soot, the best way is to create your own SceneTransformer and run it as a
phase in the "Whole Jimple Transformation Pack" (wjtp).

If that doesn't sufficiently answer your question, then you should probably
show us the parts of your code that set up and run Soot and the
ThreadLocalObjectsAnalysis.

Good Luck,
Richard

On Mon, Jun 29, 2009 at 10:54 PM, <smhuang at cse.ust.hk> wrote:

> Hi,
>
> When I am running ThreadLocalObjectsAnalysis.isObjectThreadLocal in soot,
> it prompts the following exception:
>
>
> Exception in thread "main" java.lang.ClassCastException:
> soot.baf.internal.BPushInst cannot be cast to soot.jimple.Stmt
>        at
>
> soot.jimple.toolkits.infoflow.ClassInfoFlowAnalysis.simpleConservativeInfoFlowAnalysis(ClassInfoFlowAnalysis.java:180)
>        at
>
> soot.jimple.toolkits.infoflow.ClassInfoFlowAnalysis.getMethodInfoFlowSummary(ClassInfoFlowAnalysis.java:81)
>        at
>
> soot.jimple.toolkits.infoflow.InfoFlowAnalysis.getMethodInfoFlowSummary(InfoFlowAnalysis.java:110)
>        at
>
> soot.jimple.toolkits.infoflow.InfoFlowAnalysis.getMethodInfoFlowSummary(InfoFlowAnalysis.java:106)
>        at
>
> soot.jimple.toolkits.infoflow.ClassLocalObjectsAnalysis.getContextFor(ClassLocalObjectsAnalysis.java:581)
>        at
>
> soot.jimple.toolkits.infoflow.ClassLocalObjectsAnalysis.propagate(ClassLocalObjectsAnalysis.java:533)
>        at
>
> soot.jimple.toolkits.infoflow.ClassLocalObjectsAnalysis.<init>(ClassLocalObjectsAnalysis.java:94)
>        at
>
> soot.jimple.toolkits.thread.ThreadLocalObjectsAnalysis.newClassLocalObjectsAnalysis(ThreadLocalObjectsAnalysis.java:70)
>        at
>
> soot.jimple.toolkits.infoflow.LocalObjectsAnalysis.getClassLocalObjectsAnalysis(LocalObjectsAnalysis.java:48)
>        at
>
> soot.jimple.toolkits.infoflow.LocalObjectsAnalysis.isObjectLocalToContext(LocalObjectsAnalysis.java:129)
>        at
>
> soot.jimple.toolkits.thread.ThreadLocalObjectsAnalysis.isObjectThreadLocal(ThreadLocalObjectsAnalysis.java:92)
>        at
> javato.instrumentor.RecursiveVisitor.visitStmt(RecursiveVisitor.java:90)
> at javato.instrumentor.Visitor.visitStmt(Visitor.java:129)
>        at
>
> javato.instrumentor.TransformerForInstrumentation.internalTransform(TransformerForInstrumentation.java:86)
>        at soot.BodyTransformer.transform(BodyTransformer.java:51)
>        at soot.Transform.apply(Transform.java:104)
>        at soot.BodyPack.internalApply(BodyPack.java:49)
>        at soot.Pack.apply(Pack.java:124)
>        at soot.PackManager.runBodyPacks(PackManager.java:772)
>        at soot.PackManager.runBodyPacks(PackManager.java:452)
>        at soot.PackManager.runBodyPacks(PackManager.java:371)
>        at soot.PackManager.runPacks(PackManager.java:348)
>        at soot.Main.run(Main.java:202)
>        at soot.Main.main(Main.java:145)
>        at
>
> javato.instrumentor.TransformClass.processAllAtOnce(TransformClass.java:213)
>        at
>
> javato.activetesting.instrumentor.InstrumentorForActiveTesting.main(InstrumentorForActiveTesting.java:51)
>
>
> Any hints?
>
> Thanks,
> Jeff
>
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20090630/f4a5cf11/attachment.html 


More information about the Soot-list mailing list