This is the mail archive of the kawa@sourceware.cygnus.com mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: VerifyError re. uninitialized register


--text follows this line--
Per Bothner <per@bothner.com> writes:

> You can try one of two things:
>
> (a) Pass --debug-dump-zip to kawa.  This causes it to generate a .zip
> archive for each immediate compilation.

I don't invoke kawa via kawa.repl, but from my own servlet code.  So I
added this line to my servlet's initialization and set the appropriate
parameter:

	LambdaExp.dumpZipPrefix = getInitParameter("dumpZipPrefix");

> There may be lot of them.

Yes, but it was easy to find the right one.

> In either case,once you have things narrowed down to a specific class,
> you can examine the bytecode for the problem.  If you don't know
> how to read bytecodes, you can point me to the .class or .zip files
> and I can see if I can figure it out.

I haven't read any machine code since the early '80s, but it's easy to
see the error right at the start of the method.  Looks like a problem
with compilation, not the underlying Scheme code, which starts at 33.

I can also send the .class or .zip file if that would be helpful.

Error message:
(class: atEvalLevel$lambda, method: applyN signature: ([Ljava/lang/Object;)Ljava/lang/Object;) Accessing value from uninitialized register 6

Partial dump:
Method name:80="applyN" public final Signature: 81=(java.lang.Object[])java.lang.Object
Attribute "Code", length:591, max_stack:6, max_locals:8, code_length:403
  0: aload 6
  2: iconst_0
  3: aaload
  4: astore_1
  5: aload 6
  7: iconst_1
  8: aaload
  9: astore_2
 10: aload 6
 12: iconst_2
 13: aaload
 14: astore_3
 15: aload 6
 17: iconst_3
 18: aaload
 19: astore 4
 21: aload 6
 23: iconst_4
 24: aaload
 25: astore 5
 27: aload_0
 28: getfield #6=<Field atEvalLevel$lambda.closureEnv atEvalLevel$endproc>
 31: astore 7
 33: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
 36: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
 39: checkcast #20=<Class gnu.mapping.Procedure>
 42: getstatic #24=<Field atEvalLevel.Lit5 gnu.kawa.util.FString>
 45: aload 7
 47: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
 50: checkcast #32=<Class gnu.kawa.util.Pair>
 53: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
 56: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
 59: pop
 60: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
 63: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
 66: checkcast #20=<Class gnu.mapping.Procedure>
 69: aload_1
 70: aload 7
 72: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
 75: checkcast #32=<Class gnu.kawa.util.Pair>
 78: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
 81: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
 84: pop
 85: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
 88: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
 91: checkcast #20=<Class gnu.mapping.Procedure>
 94: getstatic #55=<Field atEvalLevel.Lit6 gnu.kawa.util.FString>
 97: aload 7
 99: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
102: checkcast #32=<Class gnu.kawa.util.Pair>
105: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
108: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
111: pop
112: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
115: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
118: checkcast #20=<Class gnu.mapping.Procedure>
121: aload_3
122: aload 7
124: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
127: checkcast #32=<Class gnu.kawa.util.Pair>
130: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
133: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
136: pop
137: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
140: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
143: checkcast #20=<Class gnu.mapping.Procedure>
146: getstatic #58=<Field atEvalLevel.Lit7 gnu.kawa.util.FString>
149: aload 7
151: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
154: checkcast #32=<Class gnu.kawa.util.Pair>
157: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
160: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
163: pop
164: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
167: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
170: checkcast #20=<Class gnu.mapping.Procedure>
173: aload_2
174: aload 7
176: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
179: checkcast #32=<Class gnu.kawa.util.Pair>
182: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
185: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
188: pop
189: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
192: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
195: checkcast #20=<Class gnu.mapping.Procedure>
198: getstatic #61=<Field atEvalLevel.Lit8 gnu.kawa.util.FString>
201: aload 7
203: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
206: checkcast #32=<Class gnu.kawa.util.Pair>
209: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
212: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
215: pop
216: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
219: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
222: checkcast #20=<Class gnu.mapping.Procedure>
225: aload 4
227: aload 7
229: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
232: checkcast #32=<Class gnu.kawa.util.Pair>
235: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
238: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
241: pop
242: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
245: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
248: checkcast #20=<Class gnu.mapping.Procedure>
251: getstatic #64=<Field atEvalLevel.Lit9 gnu.kawa.util.FString>
254: aload 7
256: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
259: checkcast #32=<Class gnu.kawa.util.Pair>
262: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
265: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
268: pop
269: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
272: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
275: checkcast #20=<Class gnu.mapping.Procedure>
278: aload 5
280: aload 7
282: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
285: checkcast #32=<Class gnu.kawa.util.Pair>
288: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
291: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
294: pop
295: getstatic #12=<Field atEvalLevel.id1$display gnu.mapping.Binding>
298: invokevirtual #18=<Method gnu.mapping.Binding.getProcedure ()gnu.mapping.Procedure>
301: checkcast #20=<Class gnu.mapping.Procedure>
304: getstatic #67=<Field atEvalLevel.Lit10 gnu.kawa.util.FString>
307: aload 7
309: getfield #30=<Field atEvalLevel$endproc.brlContext java.lang.Object>
312: checkcast #32=<Class gnu.kawa.util.Pair>
315: invokestatic #48=<Method kawa.standard.car.apply (gnu.kawa.util.Pair)java.lang.Object>
318: invokevirtual #52=<Method gnu.mapping.Procedure.apply2 (java.lang.Object,java.lang.Object)java.lang.Object>
321: pop
322: getstatic #70=<Field atEvalLevel.Lit11 gnu.kawa.util.FString>
325: areturn
326: ldc #36=<String "car">
328: iconst_0
329: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
332: athrow
333: ldc #36=<String "car">
335: iconst_0
336: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
339: athrow
340: ldc #36=<String "car">
342: iconst_0
343: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
346: athrow
347: ldc #36=<String "car">
349: iconst_0
350: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
353: athrow
354: ldc #36=<String "car">
356: iconst_0
357: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
360: athrow
361: ldc #36=<String "car">
363: iconst_0
364: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
367: athrow
368: ldc #36=<String "car">
370: iconst_0
371: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
374: athrow
375: ldc #36=<String "car">
377: iconst_0
378: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
381: athrow
382: ldc #36=<String "car">
384: iconst_0
385: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
388: athrow
389: ldc #36=<String "car">
391: iconst_0
392: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
395: athrow
396: ldc #36=<String "car">
398: iconst_0
399: invokestatic #42=<Method gnu.mapping.WrongType.make (java.lang.ClassCastException,java.lang.String,int)gnu.mapping.WrongType>
402: athrow
Exceptions (count: 11):
  start: 50, end: 53, handler: 396, type: 34=java.lang.ClassCastException
  start: 75, end: 78, handler: 389, type: 34=java.lang.ClassCastException
  start: 102, end: 105, handler: 382, type: 34=java.lang.ClassCastException
  start: 127, end: 130, handler: 375, type: 34=java.lang.ClassCastException
  start: 154, end: 157, handler: 368, type: 34=java.lang.ClassCastException
  start: 179, end: 182, handler: 361, type: 34=java.lang.ClassCastException
  start: 206, end: 209, handler: 354, type: 34=java.lang.ClassCastException
  start: 232, end: 235, handler: 347, type: 34=java.lang.ClassCastException
  start: 259, end: 262, handler: 340, type: 34=java.lang.ClassCastException
  start: 285, end: 288, handler: 333, type: 34=java.lang.ClassCastException
  start: 312, end: 315, handler: 326, type: 34=java.lang.ClassCastException
Attribute "LocalVariableTable", length:82, count: 8
  slot#0: name: 83=this, type: 84=atEvalLevel$lambda (pc: 27 length: 299)
  slot#1: name: 85=eid, type: 28=java.lang.Object (pc: 27 length: 299)
  slot#2: name: 86=lastname, type: 28=java.lang.Object (pc: 27 length: 299)
  slot#3: name: 87=firstname, type: 28=java.lang.Object (pc: 27 length: 299)
  slot#4: name: 88=dept, type: 28=java.lang.Object (pc: 27 length: 299)
  slot#5: name: 89=floor, type: 28=java.lang.Object (pc: 27 length: 299)
  slot#6: name: 90=argsArray, type: 91=java.lang.Object[] (pc: 27 length: 299)
  slot#7: name: 3=closureEnv, type: 4=atEvalLevel$endproc (pc: 27 length: 299)

--
Bruce R. Lewis                  <URL:http://web.mit.edu/brlewis/www/>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]