Relates :
|
|
Relates :
|
|
Relates :
|
On windows, when executing the attached testcase, the deletion of the particular jar (when prompted to do so) would succeed for pre-mustang releases (and some early mustang builds) and fail when using the more recent mustang builds (say b50). This is observed when verifying the fix for a JCE bug (5098318) "Cached Jar file should be released on appl. exit even that is opended by Cipher" against various J2SE releases. After turning the caching off in JCE, the testcase for 5098318 passes for 1.4.2, 1.5.0 releases, and early mustang builds (say b04), and failed for more recent mustang builds. The attached testcase is based on the testcase for 5098318 but it stripped off the dependency on JCE. Lastly, one interesting observation from Brad Wetmore is that the jar deletion often succeeded when class Hello is unloaded (by setting -XX:+TraceClassUnloading) and failed otherwise. A few more comments. Here's one of the problems which made this difficult to analyze, but please note, Valerie has isolated JCE from the problem, so it's not JCE. This could be a ZIP/Jar file issue, but I'm not convinced because the test passed with "n" of jar entries reads, but failed with "n+1". This seems to be pointing more to GC. In the JCE jar verification, a class file is verified by reading its contents and comparing signed hash values. For a successful verification, we take every class file in the jar and make sure every signature is valid. If I stopped verification step after 8 jar elements, the war class was unloaded and the jar file could be deleted. However, if I stopped verification after 9 or more jar elements, the class was NOT unloaded and the jar file could not be deleted. I went through the hprof data, and could find no references to the Hello class from the root set, and thus couldn't find any reason why this wasn't being unloaded. I'm not an expert in this area by any means, so I may have misread something. This is concerning because there was an escalation filed against JCE for 1.4.2/1.5, and will probably be the same problem under 1.6 if not fixed. We have put back the JCE change to not hold the reference, but if the GC isn't working right, we may be back to another escalation. Brad
|