[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