[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