Re: RFR: java/util/logging/Logger/setResourceBundle/TestSetResourceBundle.java failing again
On 12/18/13 9:35 PM, Mandy Chung wrote: On 12/17/2013 3:57 AM, Daniel Fuchs wrote: Hi, Please find below a fix for what I believe is a test bug. I plan to push this in JDK 9 dev. https://bugs.openjdk.java.net/browse/JDK-8030187 This seems to be a very intermittent failure. It looks as if a logger held in a local variable can be arbitrarily garbage collected if that variable is no longer used. To prevent arbitrary garbage collection of such loggers, the fix makes sure to use the variable again at the end of the test. Looks like running the test in -Xcomp and also with jtreg creates pressure to the young gen and more object allocation failure and so unreachable objects get collected in the middle of a small method body (like in this case). You added code to reference the local variables referencing the loggers. Would it be simpler to have this test just to hold a strong reference to the logger? Hmmm. I don't think it would be simpler. I could have added an array list of loggers and cleared that at the end of the test. It would just have been another way of making sure that the loggers weren't gc'ed. -- daniel Mandy In the event that my analysis were wrong, I have also added some debug traces that should help if this test fails again in similar situations. http://cr.openjdk.java.net/~dfuchs/webrev_8030187/webrev.00/ best regards, -- daniel
Re: RFR: java/util/logging/Logger/setResourceBundle/TestSetResourceBundle.java failing again
On 12/19/2013 3:04 AM, Daniel Fuchs wrote: On 12/18/13 9:35 PM, Mandy Chung wrote: On 12/17/2013 3:57 AM, Daniel Fuchs wrote: Hi, Please find below a fix for what I believe is a test bug. I plan to push this in JDK 9 dev. https://bugs.openjdk.java.net/browse/JDK-8030187 This seems to be a very intermittent failure. It looks as if a logger held in a local variable can be arbitrarily garbage collected if that variable is no longer used. To prevent arbitrary garbage collection of such loggers, the fix makes sure to use the variable again at the end of the test. Looks like running the test in -Xcomp and also with jtreg creates pressure to the young gen and more object allocation failure and so unreachable objects get collected in the middle of a small method body (like in this case). You added code to reference the local variables referencing the loggers. Would it be simpler to have this test just to hold a strong reference to the logger? Hmmm. I don't think it would be simpler. I could have added an array list of loggers and cleared that at the end of the test. It would just have been another way of making sure that the loggers weren't gc'ed. Are you concerned that a static/instance field holding the loggers gets GC'ed if not referenced before the test method returns? They should be only collected when the class/instance becomes unreachable and it shouldn't be an issue (as do in other tests). I'm fine with what you have. Mandy
RFR: java/util/logging/Logger/setResourceBundle/TestSetResourceBundle.java failing again
Hi, Please find below a fix for what I believe is a test bug. I plan to push this in JDK 9 dev. https://bugs.openjdk.java.net/browse/JDK-8030187 This seems to be a very intermittent failure. It looks as if a logger held in a local variable can be arbitrarily garbage collected if that variable is no longer used. To prevent arbitrary garbage collection of such loggers, the fix makes sure to use the variable again at the end of the test. In the event that my analysis were wrong, I have also added some debug traces that should help if this test fails again in similar situations. http://cr.openjdk.java.net/~dfuchs/webrev_8030187/webrev.00/ best regards, -- daniel