Patch review request - Test bug 7123972 test/java/lang/annotation/loaderLeak/Main.java fails intermittently (original) (raw)
Eric Wang yiming.wang at oracle.com
Tue Jun 26 08:49:10 UTC 2012
- Previous message: Patch review request - Test bug 7123972 test/java/lang/annotation/loaderLeak/Main.java fails intermittently
- Next message: Patch review request - Test bug 7123972 test/java/lang/annotation/loaderLeak/Main.java fails intermittently
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Alan,
Looks that the core-libs-dev group rejects zip file, so i reattached the patches again, can you please help to review? There's another bug 6948101 <http://monaco.us.oracle.com/detail.jsf?cr=6948101> which is caused by same reason as this one, I'll send the fix in another mail thread.
Thanks, Eric
On 2012/6/25 16:06, Eric Wang wrote:
On 2012/6/21 20:16, David Holmes wrote:
Hi Eric,
On 21/06/2012 8:57 PM, Eric Wang wrote: Hi David,
Thanks for your review, I have updated the code by following your suggestion. please see the attachment. I'm not sure whether there's a better way to guarantee object finalized by GC definitely within the given time. The proposed fix may work in most cases but may still throw InterruptException if execution is timeout (2 minutes of JTreg by default). There is no way to guarantee finalization in a specific timeframe, but if a simple test hasn't executed finalizers in 2 minutes then that in itself indicates a problem. Can you post a full webrev for this patch? I don't like seeing it out of context and am wondering exactly what we are trying to GC here. David Regards, Eric On 2012/6/21 14:32, David Holmes wrote: Hi Eric,
On 21/06/2012 4:05 PM, Eric Wang wrote: I come from Java SQE team who are interested in regression test bug fix. Here is the first simple fix for bug 7123972 <http://monaco.us.oracle.com/detail.jsf?cr=7123972>, Can you please help to review and comment? Attachment is the patch Thanks!
This bug is caused by wrong assumption that the GC is started immediately to recycle un-referenced objects after System.gc() called one or two times. The proposed solution is to make sure the un-referenced object is recycled by GC before checking if the reference is null. Your patch makes its own assumptions - specifically that finalization must eventually run. At a minimum you should add System.runFinalization() calls after the System.gc() inside the loop. Even that is no guarantee in a general sense, though it should work for hotspot. David
Regards, Eric Hi Alan & David, Thank you for your comments, sorry for reply this mail late as i was just back from the dragon boat holiday. I have updated the code again based on your suggestions: rename the flag variable, increase the sleep time and remove it from problem list. The attachment is the full webrev for this patch, Can you please review again? Thanks a lot! Regards, Eric
-------------- next part -------------- --- old/test/ProblemList.txt 2012-06-25 15:41:20.466150117 +0800 +++ new/test/ProblemList.txt 2012-06-25 15:41:18.998075349 +0800 @@ -122,9 +122,6 @@ # jdk_lang -# 7123972 -java/lang/annotation/loaderLeak/Main.java generic-all
6944188
java/lang/management/ThreadMXBean/ThreadStateTest.java generic-all
-------------- next part -------------- --- old/test/java/lang/annotation/loaderLeak/Main.java 2012-06-25 15:41:26.005179716 +0800 +++ new/test/java/lang/annotation/loaderLeak/Main.java 2012-06-25 15:41:24.531076496 +0800 @@ -36,6 +36,8 @@ import java.io.*;
public class Main {
- static volatile boolean finalized = false;
- public static void main(String[] args) throws Exception { for (int i=0; i<100; i++) doTest(args.length != 0);
@@ -57,8 +59,11 @@ System.gc(); System.gc(); loader = null;
System.gc();
System.gc();
while(!finalized) {
System.gc();
System.runFinalization();
Thread.sleep(20);
} if (c.get() != null) throw new AssertionError();
} } @@ -67,6 +72,7 @@ private Hashtable classes = new Hashtable();
public SimpleClassLoader() {
Main.finalized = false;
} private byte getClassImplFromDataBase(String className)[] { byte result[];
@@ -124,4 +130,8 @@ classes.put(className, result); return result; }
- protected void finalize() {
Main.finalized = true;
- }
}
- Previous message: Patch review request - Test bug 7123972 test/java/lang/annotation/loaderLeak/Main.java fails intermittently
- Next message: Patch review request - Test bug 7123972 test/java/lang/annotation/loaderLeak/Main.java fails intermittently
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]