verification problems
Tom Tromey
tromey@redhat.com
Mon Jan 28 16:18:00 GMT 2002
>>>>> "Nic" == Nic Ferrier <nferrier@tapsellferrier.co.uk> writes:
Nic> fatal error: verification failed at PC 264 in gnu.socketserver.Server:serviceSocket(()Z): subroutines merged
Nic> If someone tells me what this error means I'll have a go at
Nic> tracking it down myself.
The JVMS says that two subroutines can't merge their returns to a
single `ret' instruction. So this is invalid:
jsr 31
return
jsr 25
return
25:
blah
goto 31
31: ret
I fixed one bug in this area yesterday.
However, further thought has convinced me to change my mind again --
now I think our approach to handling this situation is incorrect. We
check this constraint on an instruction-by-instruction basis, while
the JVMS only requires us to do so at a `ret' instruction. I think
this means that if the subroutine has no `ret' (for instance, suppose
insn 31 above was `return' or `athrow'), then the merging is fine.
Can you send me the `jcf-dump -c' output for the class in question?
I'd like to take a look at it.
Tom
More information about the Java
mailing list