[Soot-list] Help in running Soot with Heros
Andreas Pavlogiannis
paulogiann at gmail.com
Sat Jun 28 09:03:23 EDT 2014
Hi,
I am trying to use Soot with Heros for IFDS-type analysis. I am using
the sootclasses.jar and heros.jar from the nightly-build directory
http://vandyk.st.informatik.tu-darmstadt.de/abc/
Below is a minimal example that I am trying to run (a slight
modification of the file soot.jimple.toolkits.ide.Main.java).
Unfortunately, the program crashes with the following exceptions. Could
someone guide me on how to get this example working?
Thanks,
Andreas
[pool-1-thread-1] ERROR heros.solver.IDESolver - Worker thread execution
failed: java.lang.NoSuchMethodError: soot.Kind.isExecutor()Z
com.google.common.util.concurrent.ExecutionError:
java.lang.NoSuchMethodError: soot.Kind.isExecutor()Z
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2261)
at com.google.common.cache.LocalCache.get(LocalCache.java:4000)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4004)
at
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
at
com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4880)
at
soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG.getCalleesOfCallAt(JimpleBasedInterproceduralCFG.java:130)
at
soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG.getCalleesOfCallAt(JimpleBasedInterproceduralCFG.java:55)
at heros.solver.IDESolver.processCall(IDESolver.java:317)
at heros.solver.IDESolver.access$000(IDESolver.java:67)
at
heros.solver.IDESolver$PathEdgeProcessingTask.run(IDESolver.java:833)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:701)
Caused by: java.lang.NoSuchMethodError: soot.Kind.isExecutor()Z
at
soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG$EdgeFilter$1.want(JimpleBasedInterproceduralCFG.java:64)
at soot.jimple.toolkits.callgraph.Filter.advance(Filter.java:43)
at soot.jimple.toolkits.callgraph.Filter.next(Filter.java:54)
at soot.jimple.toolkits.callgraph.Filter.next(Filter.java:27)
at
soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG$1.load(JimpleBasedInterproceduralCFG.java:83)
at
soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG$1.load(JimpleBasedInterproceduralCFG.java:76)
at
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
at
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
at
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257)
... 12 more
...
...
import heros.IFDSTabulationProblem;
import heros.InterproceduralCFG;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import soot.PackManager;
import soot.SceneTransformer;
import soot.SootMethod;
import soot.Transform;
import soot.Unit;
import soot.jimple.toolkits.ide.JimpleIFDSSolver;
import soot.jimple.toolkits.ide.exampleproblems.IFDSPossibleTypes;
import soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG;
public class MWE {
public static void main(String[] args) {
PackManager.v().getPack("wjtp").add(new Transform("wjtp.ifds",
new SceneTransformer() {
protected void internalTransform(String phaseName,
@SuppressWarnings("rawtypes") Map options) {
IFDSTabulationProblem<Unit,?,SootMethod,InterproceduralCFG<Unit,SootMethod>>
problem = new IFDSPossibleTypes(new JimpleBasedInterproceduralCFG());
@SuppressWarnings({ "rawtypes", "unchecked" })
JimpleIFDSSolver<?,InterproceduralCFG<Unit,SootMethod>> solver = new
JimpleIFDSSolver(problem);
solver.solve();
}
}));
List<String> sootArgs = new
LinkedList<String>(Arrays.asList(args));
sootArgs.add("-f");
sootArgs.add("n");
sootArgs.add("-w");
String[] argsArray = sootArgs.toArray(new String[0]);
soot.Main.main(argsArray);
}
}
More information about the Soot-list
mailing list