Microsoft KB Archive/251299
Article ID: 251299
Article Last Modified on 6/14/2006
- Microsoft Java Virtual Machine
This article was previously published under Q251299
Version 5.00.3190 or earlier
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
Objects are not reliably promoted inside the "finally" blocks in interpreted methods.
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.
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.
For additional information about the latest service pack for Windows 2000, click the article number below to view the article in the Microsoft Knowledge Base:
260910 How to Obtain the Latest Windows 2000 Service Pack
For information about other fixes provided in builds 3191 and 3236 of the Microsoft virtual machine, please see the following article in the Microsoft Knowledge Base:
245643 Java Applet / Application Causes Error Code 0xc000001d
For support information about Visual J++ and the SDK for Java, visit the following Microsoft Web site:
Keywords: kbbug kbfix kbjavavm33xxfix kbqfe kbhotfixserver KB251299