Garbage collection race condition before final checks
Rémi Forax
forax at univ-mlv.fr
Tue Nov 15 14:30:51 UTC 2011
On 11/15/2011 01:26 PM, Gary Adams wrote:
> Added PlatformLoggingMXBeanTest to the 7067691 bug fix,
> e.g. instance variables for Logger variables to prevent premature
> weak reference collection.
>
> http://cr.openjdk.java.net/~gadams/7067691/
Hi Garry,
>
> Fresh webrevs for the other work in progress bug fixes.
>
> http://cr.openjdk.java.net/~gadams/6731620/
You can declare and initialize elapsed at the same place :
final long elapsed = System.currentTimeMillis() - start;
otherwise, it looks ok.
> http://cr.openjdk.java.net/~gadams/6818464/
if you want to have a variable changed in an inner class, the usual idiom
is to use an array of one element.
public static void main (String[] args) throws Exception {
+ final Thread[] tdThread = new Thread[1];
Timer t = new Timer();
// Start a mean event that kills the timer thread
t.schedule(new TimerTask() {
public void run() {
+ tdThread[0] = Thread.currentThread();
throw new ThreadDeath();
}
}, 0);
// Wait for mean event to do the deed and thread to die.
try {
+ do {
Thread.sleep(100);
+ } while(tdThread[0] == null);
} catch(InterruptedException e) {
}
+ tdThread[0].join();
// Try to start another event
try {
// Timer thread is dead now
t.schedule(new TimerTask() {
> http://cr.openjdk.java.net/~gadams/6860309/
This one is ok for me :)
> http://cr.openjdk.java.net/~gadams/7084033/
Thumb up for this one too !
cheers,
Rémi
>
> On 11/10/11 09:41 AM, Gary Adams wrote:
>> On 11/ 8/11 11:13 PM, Mandy Chung wrote:
>>>
>>>
>>> Thanks for picking up this bug and fixing this intermittent issue.
>>> PlatformLoggingMXBeanTest.java in the same directory has the same
>>> issue. It'd be good to fix that with the same CR. These tests were
>>> copied from test/java/util/logging/LoggingMXBeanTest.java. I
>>> haven't looked in details but I wonder why the
>>> test/java/util/logging tests don't have this intermittent issue and
>>> I suspect it holds a strong reference.
>>
>> I attempted to break PlatformLoggingMXBeanTest.java with a generous
>> application of
>> GC calls, but I could not get it to fail in the same manner as the
>> other test. It may be
>> failing due to a different condition.
>>
>
More information about the core-libs-dev
mailing list