[Soot-list] IFDSReachingDefinitions
Octav Chipara
ochipara at gmail.com
Fri Apr 10 13:56:03 EDT 2015
Dear Steve,
I see. However, I thought that the additional edges are necessary to
appropriately handle concurrency and the like. Will removing them or
skipping them make the analysis unsound?
-- Octav
On Friday, April 10, 2015 at 12:12:07 PM UTC-5, Steven Arzt wrote:
>
> This happens because Soot creates fake callgraph edges for certain methods
> such as Thread.run(). In this case, the assumption that the number of
> arguments inside the call site matches the number of formal parameters of
> the callee, does not hold. A client analysis must either take care of such
> cases or use a filter on the callgraph to not handle edges that have such
> special kinds. (There is actually a “kind” property on the edge that you
> can check).
>
>
>
> The example analyses inside Soot presumably don’t handle this well.
>
>
>
> *Von:* soot-lis... at CS.McGill.CA <javascript:> [mailto:
> soot-lis... at CS.McGill.CA <javascript:>] *Im Auftrag von *Octav Chipara
> *Gesendet:* Freitag, 10. April 2015 19:02
> *An:* soot... at googlegroups.com <javascript:>
> *Cc:* soot... at CS.McGill.CA <javascript:>
> *Betreff:* Re: [Soot-list] IFDSReachingDefinitions
>
>
>
> Eric,
>
>
>
> Thanks for the quick reply. The method is:
>
>
>
> <sun.security.action.GetPropertyAction: java.lang.Object run()>
>
>
>
> The exception is thrown in SootMethod:266 asking for argument 0 that does
> not exist.
>
>
>
> -- Octav
>
>
>
> PS: I modified my -cp path to explicitly include the rt.jar and jce.jar
> from jdk7. Should I use it with jdk6?
>
>
>
>
>
> On Friday, April 10, 2015 at 11:57:30 AM UTC-5, Bodden, Eric wrote:
>
> Hmm, this is odd.
>
> This looks like you are processing a call site for which the call site
> itself has actually an argument while the resolved callee method does not.
> Can you set a breakpoint or add a println to see which method call Soot
> processes when throwing the exception?
>
> Cheers,
> Eric
>
> > On 10.04.2015, at 18:37, ochi... at gmail.com wrote:
> >
> > Hi,
> >
> > I am trying to run the IFDSReachingDefinitions analysis on a trivial
> example. However, I am getting the exception included below. I suspect that
> this is an issue with how I configure soot. I have to apologize if the
> question is naive, I am just getting started with soot.
> >
> > Thanks,
> > — Octav
> >
> > [Thread-1] ERROR heros.solver.IDESolver - Worker thread execution
> failed: Index: 0, Size: 0
> > java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
> > at java.util.ArrayList.rangeCheck(ArrayList.java:635)
> > at java.util.ArrayList.get(ArrayList.java:411)
> > at
> java.util.Collections$UnmodifiableList.get(Collections.java:1211)
> > at soot.SootMethod.getParameterType(SootMethod.java:266)
> > at
> soot.jimple.toolkits.ide.exampleproblems.IFDSReachingDefinitions$1$2.computeTargets(IFDSReachingDefinitions.java:111)
>
> > at
> soot.jimple.toolkits.ide.exampleproblems.IFDSReachingDefinitions$1$2.computeTargets(IFDSReachingDefinitions.java:1)
>
> > at
> heros.ZeroedFlowFunctions$ZeroedFlowFunction.computeTargets(ZeroedFlowFunctions.java:58)
>
> > at
> heros.solver.IDESolver.computeCallFlowFunction(IDESolver.java:397)
> > at heros.solver.IDESolver.processCall(IDESolver.java:330)
> > at heros.solver.IDESolver.access$0(IDESolver.java:313)
> > at
> heros.solver.IDESolver$PathEdgeProcessingTask.run(IDESolver.java:856)
> > at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>
> > at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>
> > at java.lang.Thread.run(Thread.java:744)
> > Exception in thread "Thread-1" java.lang.InterruptedException
> > at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:996)
>
> > at
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
>
> > at heros.solver.CountLatch.awaitZero(CountLatch.java:75)
> > at
> heros.solver.CountingThreadPoolExecutor.awaitCompletion(CountingThreadPoolExecutor.java:79)
>
> > at
> heros.solver.IDESolver.runExecutorAndAwaitCompletion(IDESolver.java:258)
> > at
> heros.solver.IDESolver.awaitCompletionComputeValuesAndShutdown(IDESolver.java:233)
>
> > at heros.solver.IDESolver.solve(IDESolver.java:207)
> > at
> soot.jimple.toolkits.ide.JimpleIFDSSolver.solve(JimpleIFDSSolver.java:54)
> > at
> ReachingDefinitions$1.internalTransform(ReachingDefinitions.java:40)
> > at soot.SceneTransformer.transform(SceneTransformer.java:39)
> > at soot.Transform.apply(Transform.java:90)
> > at soot.ScenePack.internalApply(ScenePack.java:40)
> > at soot.Pack.apply(Pack.java:116)
> > at soot.PackManager.runWholeProgramPacks(PackManager.java:564)
> > at soot.PackManager.runPacksNormally(PackManager.java:456)
> > at soot.PackManager.runPacks(PackManager.java:391)
> > at soot.Main.run(Main.java:244)
> > at soot.Main.main(Main.java:152)
> > at ReachingDefinitions.main(ReachingDefinitions.java:46)
> > java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
> > at java.util.ArrayList.rangeCheck(ArrayList.java:635)
> > at java.util.ArrayList.get(ArrayList.java:411)
> > at
> java.util.Collections$UnmodifiableList.get(Collections.java:1211)
> > at soot.SootMethod.getParameterType(SootMethod.java:266)
> > at
> soot.jimple.toolkits.ide.exampleproblems.IFDSReachingDefinitions$1$2.computeTargets(IFDSReachingDefinitions.java:111)
>
> > at
> soot.jimple.toolkits.ide.exampleproblems.IFDSReachingDefinitions$1$2.computeTargets(IFDSReachingDefinitions.java:1)
>
> > at
> heros.ZeroedFlowFunctions$ZeroedFlowFunction.computeTargets(ZeroedFlowFunctions.java:58)
>
> > at
> heros.solver.IDESolver.computeCallFlowFunction(IDESolver.java:397)
> > at heros.solver.IDESolver.processCall(IDESolver.java:330)
> > at heros.solver.IDESolver.access$0(IDESolver.java:313)
> > at
> heros.solver.IDESolver$PathEdgeProcessingTask.run(IDESolver.java:856)
> > at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>
> > at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>
> > at java.lang.Thread.run(Thread.java:744)
> > java.lang.RuntimeException: There were exceptions during IDE analysis.
> Exiting.
> > at
> heros.solver.IDESolver.runExecutorAndAwaitCompletion(IDESolver.java:264)
> > at
> heros.solver.IDESolver.awaitCompletionComputeValuesAndShutdown(IDESolver.java:233)
>
> > at heros.solver.IDESolver.solve(IDESolver.java:207)
> > at
> soot.jimple.toolkits.ide.JimpleIFDSSolver.solve(JimpleIFDSSolver.java:54)
> > at
> ReachingDefinitions$1.internalTransform(ReachingDefinitions.java:40)
> > at soot.SceneTransformer.transform(SceneTransformer.java:39)
> > at soot.Transform.apply(Transform.java:90)
> > at soot.ScenePack.internalApply(ScenePack.java:40)
> > at soot.Pack.apply(Pack.java:116)
> > at soot.PackManager.runWholeProgramPacks(PackManager.java:564)
> > at soot.PackManager.runPacksNormally(PackManager.java:456)
> > at soot.PackManager.runPacks(PackManager.java:391)
> > at soot.Main.run(Main.java:244)
> > at soot.Main.main(Main.java:152)
> > at ReachingDefinitions.main(ReachingDefinitions.java:46)
> > Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
> > at java.util.ArrayList.rangeCheck(ArrayList.java:635)
> > at java.util.ArrayList.get(ArrayList.java:411)
> > at
> java.util.Collections$UnmodifiableList.get(Collections.java:1211)
> > at soot.SootMethod.getParameterType(SootMethod.java:266)
> > at
> soot.jimple.toolkits.ide.exampleproblems.IFDSReachingDefinitions$1$2.computeTargets(IFDSReachingDefinitions.java:111)
>
> > at
> soot.jimple.toolkits.ide.exampleproblems.IFDSReachingDefinitions$1$2.computeTargets(IFDSReachingDefinitions.java:1)
>
> > at
> heros.ZeroedFlowFunctions$ZeroedFlowFunction.computeTargets(ZeroedFlowFunctions.java:58)
>
> > at
> heros.solver.IDESolver.computeCallFlowFunction(IDESolver.java:397)
> > at heros.solver.IDESolver.processCall(IDESolver.java:330)
> > at heros.solver.IDESolver.access$0(IDESolver.java:313)
> > at
> heros.solver.IDESolver$PathEdgeProcessingTask.run(IDESolver.java:856)
> > at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>
> > at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>
> > at java.lang.Thread.run(Thread.java:744)
> >
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot... at CS.McGill.CA
> > https://mailman.CS.McGill.CA/mailman/listinfo/soot-list
>
> --
> Prof. Eric Bodden, Ph.D., http://sse.ec-spride.de/ http://bodden.de/
> Head of Secure Software Engineering at Fraunhofer SIT, TU Darmstadt and EC
> SPRIDE
> Tel: +49 6151 16-75422 Fax: +49 6151 869-127
> Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150410/4782866a/attachment-0003.html
More information about the Soot-list
mailing list