RFR 6987597: ManagementFactory.getGarbageCollectorMXBeans() returns empty list with CMS

Mandy Chung mandy.chung at oracle.com
Thu Nov 21 08:51:34 PST 2013


Hi Jaroslav,

On 11/19/2013 6:23 AM, Jaroslav Bachorik wrote:
> Please, review this test fix.
>
> Issue : https://bugs.openjdk.java.net/browse/JDK-6987597
> Webrev: http://cr.openjdk.java.net/~jbachorik/6987597/webrev.03
>
> The fix moves the execution of the test routine to the 
> GarbageCollectorMXBean notification handler - at that moment it's 
> certain that GC has already happened and it is safe to assert the data 
> provided by the MBean.

This patch may have a potential issue when GC happens during the process 
of adding the notification handlers such as the number of increments is 
greater than the number of registered handlers.   By the time the main 
thread reaches p.arriveAndAwaitAdvance, the phaser has advanced to the 
next phase with few arrived parties and will wait forever (until the 
next GC happens).   This should rarely happen though.  Note that 
p.arriveAndAwaitAdvance continue to run even if the thread is 
interrupted and what happens if jtreg attempts to time out the test?

Does this issue only happen to CMS with background GC thread?   The 
proposed patch seems a little overkill.   I wonder if the test should 
skip if running in CMS background mode.  Does 
-XX:+ExplicitGCInvokesConcurrent flag will get System.gc() to run in 
foreground mode in CMS (I think that may get the GC to complete before 
System.gc() returns?)

Mandy



More information about the serviceability-dev mailing list