[Soot-list] Stack height is negative!
Anders Viskum
anden at cs.au.dk
Wed Nov 11 05:46:56 EST 2009
Hello,
I am trying to instrument my code, to collect information about the conditions in all if statements. So far it is done via Grimp (in the gb pack).
I can easily collect the information as a string, as follows:
ArrayList args = new ArrayList();
args.add(StringConstant.v(ifStmt.getCondition().toString()));
units.insertBefore(Grimp.v().newInvokeStmt(
Grimp.v().newVirtualInvokeExpr
(tmpRef, toCall.makeRef(), args)), ifStmt);
But when I change the the args.add(...) to:
args.add(ifStmt.getCondition());
I get: java.lang.RuntimeException: Stack height is negative!
Can anyone help?
Kind Regards
Anders Viskum
---- stack trace----
[java] Soot started on Wed Nov 11 11:27:29 CET 2009
[java] Transforming Test...
[java] Writing to sootOutput/Test.class
[java] java.lang.RuntimeException: Stack height is negative!
[java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
[java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:747)
[java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:201)
[java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:104)
[java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[java] at org.apache.tools.ant.Task.perform(Task.java:348)
[java] at org.apache.tools.ant.Target.execute(Target.java:357)
[java] at org.apache.tools.ant.Target.performTasks(Target.java:385)
[java] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
[java] at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
[java] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[java] at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
[java] at org.apache.tools.ant.Main.runBuild(Main.java:698)
[java] at org.apache.tools.ant.Main.startAnt(Main.java:199)
[java] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[java] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
[java] Caused by: java.lang.RuntimeException: Stack height is negative!
[java] at soot.jimple.JasminClass.modifyStackHeight(JasminClass.java:54)
[java] at soot.jimple.JasminClass.emit(JasminClass.java:42)
[java] at soot.jimple.JasminClass$7.caseVirtualInvokeExpr(JasminClass.java:2725)
[java] at soot.jimple.internal.AbstractVirtualInvokeExpr.apply(AbstractVirtualInvokeExpr.java:76)
[java] at soot.jimple.JasminClass.emitValue(JasminClass.java:1616)
[java] at soot.jimple.JasminClass$5.caseInvokeStmt(JasminClass.java:1270)
[java] at soot.jimple.internal.JInvokeStmt.apply(JInvokeStmt.java:101)
[java] at soot.jimple.JasminClass.emitStmt(JasminClass.java:1239)
[java] at soot.jimple.JasminClass.emitMethodBody(JasminClass.java:486)
[java] at soot.AbstractJasminClass.emitMethod(AbstractJasminClass.java:689)
[java] at soot.AbstractJasminClass.<init>(AbstractJasminClass.java:568)
[java] at soot.jimple.JasminClass.<init>(JasminClass.java:62)
[java] at soot.PackManager.writeClass(PackManager.java:876)
[java] at soot.PackManager.writeOutput(PackManager.java:464)
[java] at soot.PackManager.writeOutput(PackManager.java:391)
[java] at soot.Main.run(Main.java:203)
[java] at soot.Main.main(Main.java:145)
[java] at SootInstrument.main(Unknown Source)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
[java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
[java] ... 20 more
[java] --- Nested Exception ---
[java] java.lang.RuntimeException: Stack height is negative!
[java] at soot.jimple.JasminClass.modifyStackHeight(JasminClass.java:54)
[java] at soot.jimple.JasminClass.emit(JasminClass.java:42)
[java] at soot.jimple.JasminClass$7.caseVirtualInvokeExpr(JasminClass.java:2725)
[java] at soot.jimple.internal.AbstractVirtualInvokeExpr.apply(AbstractVirtualInvokeExpr.java:76)
[java] at soot.jimple.JasminClass.emitValue(JasminClass.java:1616)
[java] at soot.jimple.JasminClass$5.caseInvokeStmt(JasminClass.java:1270)
[java] at soot.jimple.internal.JInvokeStmt.apply(JInvokeStmt.java:101)
[java] at soot.jimple.JasminClass.emitStmt(JasminClass.java:1239)
[java] at soot.jimple.JasminClass.emitMethodBody(JasminClass.java:486)
[java] at soot.AbstractJasminClass.emitMethod(AbstractJasminClass.java:689)
[java] at soot.AbstractJasminClass.<init>(AbstractJasminClass.java:568)
[java] at soot.jimple.JasminClass.<init>(JasminClass.java:62)
[java] at soot.PackManager.writeClass(PackManager.java:876)
[java] at soot.PackManager.writeOutput(PackManager.java:464)
[java] at soot.PackManager.writeOutput(PackManager.java:391)
[java] at soot.Main.run(Main.java:203)
[java] at soot.Main.main(Main.java:145)
[java] at SootInstrument.main(Unknown Source)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
[java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
[java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:747)
[java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:201)
[java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:104)
[java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
[java] at org.apache.tools.ant.Task.perform(Task.java:348)
[java] at org.apache.tools.ant.Target.execute(Target.java:357)
[java] at org.apache.tools.ant.Target.performTasks(Target.java:385)
[java] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
[java] at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
[java] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[java] at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
[java] at org.apache.tools.ant.Main.runBuild(Main.java:698)
[java] at org.apache.tools.ant.Main.startAnt(Main.java:199)
[java] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
[java] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
More information about the Soot-list
mailing list