<div dir="ltr">Dear Steve,<div><br></div><div>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?</div><div><br></div><div>-- Octav<br><br>On Friday, April 10, 2015 at 12:12:07 PM UTC-5, Steven Arzt wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div lang="DE" link="blue" vlink="purple"><div><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">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).</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">&nbsp;</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">The example analyses inside Soot presumably don’t handle this well.</span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">&nbsp;</span></p><p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">Von:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> <a href="javascript:" target="_blank" gdf-obfuscated-mailto="2gWKGA4sWQ4J" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">soot-lis...@CS.McGill.CA</a> [mailto:<a href="javascript:" target="_blank" gdf-obfuscated-mailto="2gWKGA4sWQ4J" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">soot-lis...@CS.<wbr>McGill.CA</a>] <b>Im Auftrag von </b>Octav Chipara<br><b>Gesendet:</b> Freitag, 10. April 2015 19:02<br><b>An:</b> <a href="javascript:" target="_blank" gdf-obfuscated-mailto="2gWKGA4sWQ4J" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">soot...@googlegroups.com</a><br><b>Cc:</b> <a href="javascript:" target="_blank" gdf-obfuscated-mailto="2gWKGA4sWQ4J" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">soot...@CS.McGill.CA</a><br><b>Betreff:</b> Re: [Soot-list] IFDSReachingDefinitions</span></p><p class="MsoNormal">&nbsp;</p><div><p class="MsoNormal">Eric,</p><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">Thanks for the quick reply. The method is:</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">&lt;sun.security.action.<wbr>GetPropertyAction: java.lang.Object run()&gt;</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">The exception is thrown in SootMethod:266 asking for argument 0 that does not exist.&nbsp;</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">-- Octav</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal">PS: I modified my -cp path to explicitly include the rt.jar and jce.jar from jdk7. Should I use it with jdk6?</p></div><div><p class="MsoNormal">&nbsp;</p></div><div><p class="MsoNormal"><br><br>On Friday, April 10, 2015 at 11:57:30 AM UTC-5, Bodden, Eric wrote:</p><p class="MsoNormal" style="margin-bottom:12.0pt">Hmm, this is odd. <br><br>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? <br><br>Cheers, <br>Eric <br><br>&gt; On 10.04.2015, at 18:37, <a>ochi...@gmail.com</a> wrote: <br>&gt; <br>&gt; Hi, <br>&gt; <br>&gt; 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. <br>&gt; <br>&gt; Thanks, <br>&gt; — Octav <br>&gt; <br>&gt; [Thread-1] ERROR heros.solver.IDESolver - Worker thread execution failed: Index: 0, Size: 0 <br>&gt; java.lang.<wbr>IndexOutOfBoundsException: Index: 0, Size: 0 <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.ArrayList.<wbr>rangeCheck(ArrayList.java:635) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.ArrayList.get(<wbr>ArrayList.java:411) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.Collections$<wbr>UnmodifiableList.get(<wbr>Collections.java:1211) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.SootMethod.<wbr>getParameterType(SootMethod.<wbr>java:266) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.jimple.toolkits.ide.<wbr>exampleproblems.<wbr>IFDSReachingDefinitions$1$2.<wbr>computeTargets(<wbr>IFDSReachingDefinitions.java:<wbr>111) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.jimple.toolkits.ide.<wbr>exampleproblems.<wbr>IFDSReachingDefinitions$1$2.<wbr>computeTargets(<wbr>IFDSReachingDefinitions.java:<wbr>1) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.ZeroedFlowFunctions$<wbr>ZeroedFlowFunction.<wbr>computeTargets(<wbr>ZeroedFlowFunctions.java:58) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>computeCallFlowFunction(<wbr>IDESolver.java:397) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>processCall(IDESolver.java:<wbr>330) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.access$<wbr>0(IDESolver.java:313) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver$<wbr>PathEdgeProcessingTask.run(<wbr>IDESolver.java:856) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.concurrent.<wbr>ThreadPoolExecutor.runWorker(<wbr>ThreadPoolExecutor.java:1145) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.concurrent.<wbr>ThreadPoolExecutor$Worker.run(<wbr>ThreadPoolExecutor.java:615) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.lang.Thread.run(Thread.<wbr>java:744) <br>&gt; Exception in thread "Thread-1" java.lang.InterruptedException <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.concurrent.locks.<wbr>AbstractQueuedSynchronizer.<wbr>doAcquireSharedInterruptibly(<wbr>AbstractQueuedSynchronizer.<wbr>java:996) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.concurrent.locks.<wbr>AbstractQueuedSynchronizer.<wbr>acquireSharedInterruptibly(<wbr>AbstractQueuedSynchronizer.<wbr>java:1303) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.CountLatch.<wbr>awaitZero(CountLatch.java:75) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.<wbr>CountingThreadPoolExecutor.<wbr>awaitCompletion(<wbr>CountingThreadPoolExecutor.<wbr>java:79) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>runExecutorAndAwaitCompletion(<wbr>IDESolver.java:258) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>awaitCompletionComputeValuesAn<wbr>dShutdown(IDESolver.java:233) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.solve(<wbr>IDESolver.java:207) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.jimple.toolkits.ide.<wbr>JimpleIFDSSolver.solve(<wbr>JimpleIFDSSolver.java:54) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at ReachingDefinitions$1.<wbr>internalTransform(<wbr>ReachingDefinitions.java:40) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.SceneTransformer.<wbr>transform(SceneTransformer.<wbr>java:39) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.Transform.apply(<wbr>Transform.java:90) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.ScenePack.internalApply(<wbr>ScenePack.java:40) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.Pack.apply(Pack.java:116) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.PackManager.<wbr>runWholeProgramPacks(<wbr>PackManager.java:564) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.PackManager.<wbr>runPacksNormally(PackManager.<wbr>java:456) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.PackManager.runPacks(<wbr>PackManager.java:391) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.Main.run(Main.java:244) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.Main.main(Main.java:152) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at ReachingDefinitions.main(<wbr>ReachingDefinitions.java:46) <br>&gt; java.lang.<wbr>IndexOutOfBoundsException: Index: 0, Size: 0 <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.ArrayList.<wbr>rangeCheck(ArrayList.java:635) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.ArrayList.get(<wbr>ArrayList.java:411) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.Collections$<wbr>UnmodifiableList.get(<wbr>Collections.java:1211) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.SootMethod.<wbr>getParameterType(SootMethod.<wbr>java:266) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.jimple.toolkits.ide.<wbr>exampleproblems.<wbr>IFDSReachingDefinitions$1$2.<wbr>computeTargets(<wbr>IFDSReachingDefinitions.java:<wbr>111) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.jimple.toolkits.ide.<wbr>exampleproblems.<wbr>IFDSReachingDefinitions$1$2.<wbr>computeTargets(<wbr>IFDSReachingDefinitions.java:<wbr>1) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.ZeroedFlowFunctions$<wbr>ZeroedFlowFunction.<wbr>computeTargets(<wbr>ZeroedFlowFunctions.java:58) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>computeCallFlowFunction(<wbr>IDESolver.java:397) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>processCall(IDESolver.java:<wbr>330) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.access$<wbr>0(IDESolver.java:313) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver$<wbr>PathEdgeProcessingTask.run(<wbr>IDESolver.java:856) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.concurrent.<wbr>ThreadPoolExecutor.runWorker(<wbr>ThreadPoolExecutor.java:1145) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.concurrent.<wbr>ThreadPoolExecutor$Worker.run(<wbr>ThreadPoolExecutor.java:615) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.lang.Thread.run(Thread.<wbr>java:744) <br>&gt; java.lang.RuntimeException: There were exceptions during IDE analysis. Exiting. <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>runExecutorAndAwaitCompletion(<wbr>IDESolver.java:264) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>awaitCompletionComputeValuesAn<wbr>dShutdown(IDESolver.java:233) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.solve(<wbr>IDESolver.java:207) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.jimple.toolkits.ide.<wbr>JimpleIFDSSolver.solve(<wbr>JimpleIFDSSolver.java:54) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at ReachingDefinitions$1.<wbr>internalTransform(<wbr>ReachingDefinitions.java:40) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.SceneTransformer.<wbr>transform(SceneTransformer.<wbr>java:39) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.Transform.apply(<wbr>Transform.java:90) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.ScenePack.internalApply(<wbr>ScenePack.java:40) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.Pack.apply(Pack.java:116) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.PackManager.<wbr>runWholeProgramPacks(<wbr>PackManager.java:564) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.PackManager.<wbr>runPacksNormally(PackManager.<wbr>java:456) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.PackManager.runPacks(<wbr>PackManager.java:391) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.Main.run(Main.java:244) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.Main.main(Main.java:152) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at ReachingDefinitions.main(<wbr>ReachingDefinitions.java:46) <br>&gt; Caused by: java.lang.<wbr>IndexOutOfBoundsException: Index: 0, Size: 0 <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.ArrayList.<wbr>rangeCheck(ArrayList.java:635) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.ArrayList.get(<wbr>ArrayList.java:411) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.Collections$<wbr>UnmodifiableList.get(<wbr>Collections.java:1211) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.SootMethod.<wbr>getParameterType(SootMethod.<wbr>java:266) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.jimple.toolkits.ide.<wbr>exampleproblems.<wbr>IFDSReachingDefinitions$1$2.<wbr>computeTargets(<wbr>IFDSReachingDefinitions.java:<wbr>111) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at soot.jimple.toolkits.ide.<wbr>exampleproblems.<wbr>IFDSReachingDefinitions$1$2.<wbr>computeTargets(<wbr>IFDSReachingDefinitions.java:<wbr>1) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.ZeroedFlowFunctions$<wbr>ZeroedFlowFunction.<wbr>computeTargets(<wbr>ZeroedFlowFunctions.java:58) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>computeCallFlowFunction(<wbr>IDESolver.java:397) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.<wbr>processCall(IDESolver.java:<wbr>330) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver.access$<wbr>0(IDESolver.java:313) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at heros.solver.IDESolver$<wbr>PathEdgeProcessingTask.run(<wbr>IDESolver.java:856) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.concurrent.<wbr>ThreadPoolExecutor.runWorker(<wbr>ThreadPoolExecutor.java:1145) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.util.concurrent.<wbr>ThreadPoolExecutor$Worker.run(<wbr>ThreadPoolExecutor.java:615) <br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.lang.Thread.run(Thread.<wbr>java:744) <br>&gt; <br>&gt; <br>&gt; ______________________________<wbr>_________________ <br>&gt; Soot-list mailing list <br>&gt; <a>Soot...@CS.McGill.CA</a> <br>&gt; <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank" rel="nofollow" onmousedown="this.href='https://www.google.com/url?q\75https%3A%2F%2Fmailman.CS.McGill.CA%2Fmailman%2Flistinfo%2Fsoot-list\46sa\75D\46sntz\0751\46usg\75AFQjCNESpIFG08DX_QShQ4aH7soZrrlBBw';return true;" onclick="this.href='https://www.google.com/url?q\75https%3A%2F%2Fmailman.CS.McGill.CA%2Fmailman%2Flistinfo%2Fsoot-list\46sa\75D\46sntz\0751\46usg\75AFQjCNESpIFG08DX_QShQ4aH7soZrrlBBw';return true;">https://mailman.CS.McGill.CA/<wbr>mailman/listinfo/soot-list</a> <br><br>-- <br>Prof. Eric Bodden, Ph.D., <a href="http://sse.ec-spride.de/" target="_blank" rel="nofollow" onmousedown="this.href='http://www.google.com/url?q\75http%3A%2F%2Fsse.ec-spride.de%2F\46sa\75D\46sntz\0751\46usg\75AFQjCNGigQaO_uOHvandnthTpq57clh04g';return true;" onclick="this.href='http://www.google.com/url?q\75http%3A%2F%2Fsse.ec-spride.de%2F\46sa\75D\46sntz\0751\46usg\75AFQjCNGigQaO_uOHvandnthTpq57clh04g';return true;">http://sse.ec-spride.de/</a> <a href="http://bodden.de/" target="_blank" rel="nofollow" onmousedown="this.href='http://www.google.com/url?q\75http%3A%2F%2Fbodden.de%2F\46sa\75D\46sntz\0751\46usg\75AFQjCNHm7ItjaIfrpX0RX7qk8gMYDErdeA';return true;" onclick="this.href='http://www.google.com/url?q\75http%3A%2F%2Fbodden.de%2F\46sa\75D\46sntz\0751\46usg\75AFQjCNHm7ItjaIfrpX0RX7qk8gMYDErdeA';return true;">http://bodden.de/</a> <br>Head of Secure Software Engineering at Fraunhofer SIT, TU Darmstadt and EC SPRIDE <br>Tel: +49 6151 16-75422 &nbsp; &nbsp;Fax: +49 6151 869-127 <br>Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt </p></div></div></div></div></blockquote></div></div>