[Soot-list] IFDSReachingDefinitions
Steven Arzt
Steven.Arzt at cased.de
Fri Apr 10 13:11:39 EDT 2015
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-list-bounces at CS.McGill.CA [mailto:soot-list-bounces at CS.McGill.CA] Im Auftrag von Octav Chipara
Gesendet: Freitag, 10. April 2015 19:02
An: soot-list at googlegroups.com
Cc: soot-list at CS.McGill.CA
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 <javascript:> 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 <javascript:>
> 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/31d35cb9/attachment-0001.html
More information about the Soot-list
mailing list