Microsoft KB Archive/251299

= FIX: Problem Promoting Objects in 'Finally' Blocks in Interpreted Methods During Garbage Collection =

Article ID: 251299

Article Last Modified on 6/14/2006

-

APPLIES TO


 * Microsoft Java Virtual Machine

-



This article was previously published under Q251299



Version 5.00.3190 or earlier



SYMPTOMS
When you have lots of local variables of object and primitive types in a "finally" block of an interpreted method, this can cause problems during "garbage collection" (GC). (Garbage collection is cleanup of objects that are no longer in use by your program.) This might cause an access violation.

A call stack of a faulting thread in such failures is as follows:

msjava!jvmClass__FindInterfaceVTable+0x4a msjava!CJavaEngine__DO_invokeinterface+0x71 msjava!FastInterpreter+0x3b4 msjava!CJavaEngine__VMInvoke+0x2a msjava!MethodDesc__CallFromInterpreter+0x29 msjava!CCW_C_ThunkToJava+0x200



CAUSE
Objects are not reliably promoted inside the "finally" blocks in interpreted methods.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

This problem was corrected in versions 3191 and 3236 of the Microsoft virtual machine.

This problem was corrected in Windows 2000 Service Pack 1.



MORE INFORMATION
The Microsoft virtual machine creates live pointer maps for interpreted Java methods to determine what local variables are alive so that they are promoted (keeping them valid) when a garbage collection occurs. Failures could be due to use of stale objects.

