This is the mail archive of the
kawa@sourceware.org
mailing list for the Kawa project.
Re: java.lang.VerifyError exception
- From: Seth Alves <seth dot alves at gmail dot com>
- To: kawa at sourceware dot org, Per Bothner <per at bothner dot com>
- Date: Sat, 07 Feb 2015 19:18:19 -0800
- Subject: Re: java.lang.VerifyError exception
- Authentication-results: sourceware.org; auth=none
- References: <54A1FDA7 dot 7050200 at hungry dot com> <54CF69F5 dot 4030801 at bothner dot com>
Here's a similar one that seems to sidestep this fix.
-seth
On 02/02/2015 04:13 AM, Per Bothner wrote:
After many false starts, I have a fix that seems to work.
Sorry for the delay - this was the sort of painful problem that
encourages procrastination ...
On 12/30/2014 02:19 AM, Seth Alves wrote:
Here is a boiled-down snippet of nonsense code (it started as part of
the snow zlib package).
-seth
$ ./test-kawa.scm
Exception in thread "main" java.lang.VerifyError: Bad local variable
type
Exception Details:
Location:
fuh$frame.lambda1loop()Ljava/lang/Object; @13: aload_2
Reason:
Type top (current frame, locals[2]) is not assignable to
reference type
Current Frame:
bci: @13
flags: { }
locals: { 'fuh$frame', 'fuh$frame0' }
stack: { }
Bytecode:
0000000: bb00 0459 b700 0859 2ab5 000c 4c2c 1008
0000010: b800 124d 2b05 bd00 1459 03b2 001a 5359
0000020: 04b2 001e 53b8 0024 b600 28b0
at fuh.gunzipGenport(test-kawa.scm:11)
at fuh.apply0(test-kawa.scm:11)
at gnu.expr.ModuleMethod.apply0(ModuleMethod.java:186)
at gnu.expr.ModuleMethod.apply(ModuleMethod.java:160)
at gnu.mapping.CallContext.runUntilDone(CallContext.java:234)
at test$Mnkawa.run(test-kawa.scm:34)
at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:317)
at gnu.expr.CompiledModule.evalModule(CompiledModule.java:42)
at gnu.expr.CompiledModule.evalModule(CompiledModule.java:61)
at kawa.Shell.runFile(Shell.java:538)
at kawa.Shell.runFileOrClass(Shell.java:447)
at kawa.repl.main(repl.java:881)
#! /bin/sh
#| -*- scheme -*-
exec /usr/local/bin/kawa $0 "$@"
|#
(import (scheme base)
(scheme write))
(define (bluh)
(define (foo c) #f)
(define (bar f) #f)
(define (baz n) 2)
(define (snoo)
(bar (lambda (i) #f))
(foo #f))
(define (blee)
(let loop ((ret 0))
(foo (lambda () (loop 0)))))
(define (pup)
(let ((l (make-vector 288)))
(bar (lambda (i) (vector-set! l i 5)))
(blee)))
(define (blerg)
(let* ((res (snoo)))
(blee)))
(let* ((t (baz 2)))
(let loop ((res
(case t
((0) 5)
((1) (pup))
((2) (blerg))
(else
#f))))
#f)))
(bluh)