[Soot-list] Soot Exception using Paddle

Jochen Huck jochen.huck at student.kit.edu
Thu Feb 17 12:06:04 EST 2011


Hi,

if I use SPARK for generating a call graph everything is fine. Using 
Paddle I encounter following  exception:

Error generating ij.Menus: void installJarPlugins() {
     if(jarFiles == null)
       return ;
     installingJars = true;
     for(int i = 0; i < jarFiles.size(); i++) {
       isJarErrorHeading = false;
       String jar = (String)jarFiles.elementAt(i);
       InputStream is;
       is = getConfigurationFile(jar);
       if(is == null)
         continue ;
       int maxEntries = 100;
       String[] entries = new String[maxEntries];
       int nEntries = 0;
       LineNumberReader lnr = new LineNumberReader(new 
InputStreamReader(is));
       try {
         while(true){
           String s;
           s = lnr.readLine();
           if(s == null || nEntries == maxEntries - 1)
             break ;
           if(s.length() >= 3 && !s.startsWith("#"))
             entries[nEntries++] = s;
         }
       }
       catch (IOException e) {
       }
       finally {
         try {
           if(lnr != null)
             lnr.close();
         }
         catch (IOException e) {
         }
       }
       for(int j = 0; j < nEntries; j++)
         installJarPlugin(jar, entries[j]);
     }
     return ;
   }
Exception in thread "Thread-4" java.lang.RuntimeException: Chain already 
contains object: nop
     at soot.util.HashChain.addLast(HashChain.java:283)
     at soot.util.HashChain.add(HashChain.java:66)
     at soot.PatchingChain.add(PatchingChain.java:65)
     at soot.JastAddJ.Body.add(Body.java:128)
     at soot.JastAddJ.Body.addLabel(Body.java:154)
     at soot.JastAddJ.TryStmt.jimplify2(TryStmt.java:186)
     at soot.JastAddJ.Block.jimplify2(Block.java:91)
     at soot.JastAddJ.TryStmt.emitFinallyCode(TryStmt.java:177)
     at soot.JastAddJ.TryStmt.jimplify2(TryStmt.java:212)
     at soot.JastAddJ.Block.jimplify2(Block.java:91)
     at soot.JastAddJ.ForStmt.jimplify2(ForStmt.java:160)
     at soot.JastAddJ.Block.jimplify2(Block.java:91)
     at soot.JastAddJ.MethodDecl.jimplify2(MethodDecl.java:872)
     at 
soot.JastAddInitialResolver$1.getBody(JastAddInitialResolver.java:127)
     at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:82)
     at soot.SootMethod.retrieveActiveBody(SootMethod.java:315)
     at 
soot.jimple.paddle.TradStaticCallBuilder.processMethod(TradStaticCallBuilder.java:60)
     at 
soot.jimple.paddle.TradStaticCallBuilder.update(TradStaticCallBuilder.java:44)
     at 
soot.jimple.paddle.DependencyManager.update(DependencyManager.java:76)
     at soot.jimple.paddle.OFCGScene.solve(OFCGScene.java:168)
     at soot.jimple.paddle.OFCGConfig.solve(OFCGConfig.java:35)
     at soot.jimple.paddle.PaddleScene.solve(PaddleScene.java:1390)
     at 
soot.jimple.paddle.PaddleTransformer.solve(PaddleTransformer.java:99)
     at 
soot.jimple.paddle.PaddleTransformer.internalTransform(PaddleTransformer.java:46)
     at soot.SceneTransformer.transform(SceneTransformer.java:39)
     at soot.jimple.paddle.PaddleHook.internalTransform(PaddleHook.java:43)
     at soot.SceneTransformer.transform(SceneTransformer.java:39)
     at soot.Transform.apply(Transform.java:89)
     at soot.RadioScenePack.internalApply(RadioScenePack.java:57)
     at 
soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:47)
     at soot.Pack.apply(Pack.java:114)
     at soot.PackManager.runWholeProgramPacks(PackManager.java:417)
     at soot.PackManager.runPacks(PackManager.java:336)
     at soot.Main.run(Main.java:198)
     at soot.Main.main(Main.java:141)

Can anyone help me with this?

Thanks, Jochen


More information about the Soot-list mailing list