[Soot-list] Help in running Soot with Heros

Steven Arzt Steven.Arzt at cased.de
Mon Jun 30 09:08:56 EDT 2014


Hi Andreas,

A NoSuchMethodError usually indicates a version mismatch somewhere in your
class files. Either your Heros and Soot versions are incompatible or not all
class files have been rebuilt correctly after the last update. Try to clean
both the Heros and Soot projects. Then build Heros, afterwards Soot, and try
running your program again.

Best regards,
  Steven

-----Ursprüngliche Nachricht-----
Von: soot-list-bounces at CS.McGill.CA [mailto:soot-list-bounces at CS.McGill.CA]
Im Auftrag von Andreas Pavlogiannis
Gesendet: Samstag, 28. Juni 2014 15:03
An: soot-list at cs.mcgill.ca
Betreff: [Soot-list] Help in running Soot with Heros

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:487
4)
     at
com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache
.java:4880)
     at
soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG.getCalleesOfCall
At(JimpleBasedInterproceduralCFG.java:130)
     at
soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG.getCalleesOfCall
At(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:11
46)
     at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6
15)
     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.wan
t(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(JimpleBas
edInterproceduralCFG.java:83)
     at
soot.jimple.toolkits.ide.icfg.JimpleBasedInterproceduralCFG$1.load(JimpleBas
edInterproceduralCFG.java:76)
     at
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCac
he.java:3599)
     at
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
     at
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2
342)
     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);
     }

}


_______________________________________________
Soot-list mailing list
Soot-list at CS.McGill.CA
https://mailman.CS.McGill.CA/mailman/listinfo/soot-list



More information about the Soot-list mailing list