Re: [Sablevm-user] Assertion failure
Brought to you by:
egagnon
From: Archie C. <ar...@de...> - 2003-02-19 18:15:07
|
Prof. Etienne M. Gagnon wrote: > > Here's what I get: > > > > $ sablevm x > > assertion "instruction->stack_and_local_map->stack_size >= 0" failed: file "prepare_code.c", line 1088 > > Abort(core dumped) > ??? > > Any ideas appreciated... > > This *should* only happen if you were trying to execute unverifiable bytecode (a > verifier would reject the code). Could you find out exactly which method is > executing, then send us the > javap -c -l -private -s -verbose > output for that method? The JavaP output is below. The offending method is the second constructor: JAssignStmt$LinkedVariableBox.<init>(JAssignStmt, JAssignStmt$2, Value) Thanks, -Archie __________________________________________________________________________ Archie Cobbs * Packet Design * http://www.packetdesign.com Compiled from JAssignStmt.java private class soot.jimple.internal.JAssignStmt. LinkedVariableBox extends soot.jimple.internal.VariableBox /* ACC_SUPER bit NOT set */ { private final soot.jimple.internal.JAssignStmt this$0; /* Lsoot/jimple/internal/JAssignStmt; */ soot.ValueBox otherBox; /* Lsoot/ValueBox; */ private soot.jimple.internal.JAssignStmt.LinkedVariableBox(soot.jimple.internal.JAssignStmt,soot.Value); /* (Lsoot/jimple/internal/JAssignStmt;Lsoot/Value;)V */ /* Stack=2, Locals=3, Args_size=3 */ soot.jimple.internal.JAssignStmt.LinkedVariableBox(soot.jimple.internal.JAssignStmt,soot.jimple.internal.JAssignStmt$2,soot.Value); /* (Lsoot/jimple/internal/JAssignStmt;Lsoot/jimple/internal/JAssignStmt$2;Lsoot/Value;)V */ /* Stack=3, Locals=4, Args_size=4 */ public boolean canContainValue(soot.Value); /* (Lsoot/Value;)Z */ /* Stack=2, Locals=3, Args_size=2 */ public void setOtherBox(soot.ValueBox); /* (Lsoot/ValueBox;)V */ /* Stack=2, Locals=2, Args_size=2 */ } Method soot.jimple.internal.JAssignStmt. LinkedVariableBox(soot.jimple.internal.JAssignStmt,soot.Value) 0 aload_0 1 aload_2 2 invokespecial #7 <Method soot.jimple.internal.VariableBox(soot.Value)> 5 aload_0 6 aload_1 7 putfield #12 <Field soot.jimple.internal.JAssignStmt this$0> 10 aload_0 11 aconst_null 12 putfield #11 <Field soot.ValueBox otherBox> 15 return Line numbers for method soot.jimple.internal.JAssignStmt. LinkedVariableBox(soot.jimple.internal.JAssignStmt,soot.Value) line 51: 0 line 42: 5 line 51: 6 line 42: 7 line 47: 10 line 49: 15 Method soot.jimple.internal.JAssignStmt. LinkedVariableBox(soot.jimple.internal.JAssignStmt,soot.jimple.internal.JAssignStmt$2,soot.Value) 0 aload_0 1 aload_1 2 aload_3 3 invokespecial #8 <Method soot.jimple.internal.JAssignStmt. LinkedVariableBox(soot.jimple.internal.JAssignStmt,soot.Value)> 6 return Line numbers for method soot.jimple.internal.JAssignStmt. LinkedVariableBox(soot.jimple.internal.JAssignStmt,soot.jimple.internal.JAssignStmt$2,soot.Value) line 49: 0 Method boolean canContainValue(soot.Value) 0 aload_0 1 getfield #11 <Field soot.ValueBox otherBox> 4 ifnonnull 13 7 aload_0 8 aload_1 9 invokespecial #9 <Method boolean canContainValue(soot.Value)> 12 ireturn 13 aload_0 14 getfield #11 <Field soot.ValueBox otherBox> 17 invokeinterface (args 1) #10 <InterfaceMethod soot.Value getValue()> 22 astore_2 23 aload_0 24 aload_1 25 invokespecial #9 <Method boolean canContainValue(soot.Value)> 28 ifeq 59 31 aload_1 32 instanceof #1 <Class soot.Local> 35 ifne 63 38 aload_1 39 instanceof #3 <Class soot.jimple.Constant> 42 ifne 63 45 aload_2 46 instanceof #1 <Class soot.Local> 49 ifne 63 52 aload_2 53 instanceof #3 <Class soot.jimple.Constant> 56 ifne 63 59 iconst_0 60 goto 64 63 iconst_1 64 ireturn Line numbers for method boolean canContainValue(soot.Value) line 58: 0 line 59: 13 line 60: 23 line 61: 31 line 60: 59 Method void setOtherBox(soot.ValueBox) 0 aload_0 1 aload_1 2 putfield #11 <Field soot.ValueBox otherBox> 5 return Line numbers for method void setOtherBox(soot.ValueBox) line 54: 0 |