[Soot-list] Paddle error

Ondrej Lhotak olhotak at uwaterloo.ca
Sun Oct 17 14:45:16 EDT 2010


There are hard-coded limits on the number of bits in each domain of the
analysis. You can increase this limit in
soot/jimple/paddle/bdddomains/SigDomain.jedd. (Replace the 14 with 15 or
16.)

On Mon, Oct 11, 2010 at 01:05:06PM -0700, Molnar Arthur wrote:
> Hello everyone,
> I'm trying to use Paddle in order to build object sensitive callgraphs for
> several open source applications; when running it in object sensitivity mode
> using the buddy backend I receive the following error (the specific app is
> FreeMind, latest version, using JDK 1.4.2):
> 
> Exception in thread "Thread-0" java.lang.RuntimeException: Value 16432 was too
> large in domain soot.jimple.paddle.bdddomains.SigDomain!
>     at jedd.internal.Domain.setBits(Domain.java:62)
>     at jedd.internal.Jedd.literal(Jedd.java:158)
>     at soot.jimple.paddle.BDDVirtualCalls.<init>(BDDVirtualCalls.java:38)
>     at soot.jimple.paddle.BDDFactory.VirtualCalls(BDDFactory.java:199)
>     at soot.jimple.paddle.OFCGScene.build(OFCGScene.java:241)
>     at soot.jimple.paddle.OFCGScene.setup(OFCGScene.java:91)
>     at soot.jimple.paddle.OFCGConfig.setup(OFCGConfig.java:30)
>     at soot.jimple.paddle.PaddleScene.setup(PaddleScene.java:1321)
>     at soot.jimple.paddle.PaddleTransformer.setup(PaddleTransformer.java:84)
>     at soot.jimple.paddle.PaddleTransformer.internalTransform
> (PaddleTransformer.java:45)
>     at soot.SceneTransformer.transform(SceneTransformer.java:39)
>     at cg.TestCallGraph.run(TestCallGraph.java:91)
>     at java.lang.Thread.run(Thread.java:619)
> 
> My application is definitely NOT running out of memory, so there must be
> something else at play here. If anybody has an idea regarding this error,
> please help :). I have also attached the code that generates the error:
> 
>         Options.v().set_whole_program(true);
>         Scene.v().loadBasicClasses();
>         Scene.v().setSootClassPath(SOOT_PATH);
>         Scene.v().setMainClass(Scene.v().loadClassAndSupport
> ("freemind.main.FreeMindStarter"));
>         Scene.v().loadDynamicClasses();
> 
>         SootClass cl = Scene.v().loadClassAndSupport
> ("freemind.view.mindmapview.NodeView");
>         cl.setApplicationClass();
> 
>         HashMap optionsMap = new HashMap();
>         optionsMap.put("enabled", "true");
> 
>         SceneTransformer sctform;
>         PhaseOptions.v().setPhaseOption("jb.ne", "enabled:false");
>         PhaseOptions.v().setPhaseOption("jb.uce", "enabled:false");
>         PhaseOptions.v().setPhaseOption("jb.dae", "enabled:false");
>         PhaseOptions.v().setPhaseOption("jb.ule", "enabled:false");
>         PhaseOptions.v().setPhaseOption("jb.cp-ule", "enabled:false");
>         PhaseOptions.v().setPhaseOption("jj", "enabled:false");
> 
>         PhaseOptions.v().setPhaseOption("wstp", "enabled:false");
>         PhaseOptions.v().setPhaseOption("wsop", "enabled:false");
>         PhaseOptions.v().setPhaseOption("wjtp", "enabled:false");
>         PhaseOptions.v().setPhaseOption("wjop", "enabled:false");
>         PhaseOptions.v().setPhaseOption("wjap", "enabled:false");
>         PhaseOptions.v().setPhaseOption("shimple", "enabled:false");
>         PhaseOptions.v().setPhaseOption("stp", "enabled:false");
>         PhaseOptions.v().setPhaseOption("sop", "enabled:false");
>         PhaseOptions.v().setPhaseOption("jtp", "enabled:false");
>         PhaseOptions.v().setPhaseOption("jop", "enabled:false");
>         PhaseOptions.v().setPhaseOption("jap", "enabled:false");
>         PhaseOptions.v().setPhaseOption("gb", "enabled:false");
>         PhaseOptions.v().setPhaseOption("gop", "enabled:false");
>         PhaseOptions.v().setPhaseOption("bb", "enabled:false");
>         PhaseOptions.v().setPhaseOption("bop", "enabled:false");
>         PhaseOptions.v().setPhaseOption("tag", "enabled:false");
>         PhaseOptions.v().setPhaseOption("db", "enabled:false");
> 
>         PhaseOptions.v().setPhaseOption("cg", "implicit-entry:false");
>         PhaseOptions.v().setPhaseOption("cg", "verbose:false");
>         PhaseOptions.v().setPhaseOption("cg", "jdkver:4");
>         PhaseOptions.v().setPhaseOption("cg", "all-reachable:true");
> 
>         optionsMap.put("enabled", "true");
>         optionsMap.put("verbose", "true");
>         optionsMap.put("bdd", "true");
>         optionsMap.put("backend", "buddy");
>         optionsMap.put("context", "objsens");
>         optionsMap.put("propagator", "auto");
>         optionsMap.put("conf", "ofcg");
>         optionsMap.put("order", "32");
>         optionsMap.put("q", "auto");
>         optionsMap.put("set-impl", "double");
>         optionsMap.put("double-set-old", "hybrid");
>         optionsMap.put("double-set-new", "hybrid");
>         optionsMap.put("pre-jimplify", "false");
> 
>         sctform = PaddleTransformer.v();
> 

> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list



More information about the Soot-list mailing list