RFR: 8298783: java/lang/ref/FinalizerHistogramTest.java failed with "RuntimeException: MyObject is not found in test output" [v5]
    Kim Barrett 
    kbarrett at openjdk.org
       
    Sun Apr 27 10:13:49 UTC 2025
    
    
  
On Fri, 25 Apr 2025 21:30:10 GMT, Brent Christian <bchristi at openjdk.org> wrote:
>> I propose some cleanups to `FinalizerHistogramTest.java` to hopefully clear up the intermittent failures:
>> 
>> * run with `othervm`: this test blocks the (global) finalizer thread, and also requires the (global) finalizer thread to enter the test's `finalize()` method
>> * The test uses `volatile` ints, but sets them based on their current value, which is not reliable; convert to `AtomicInteger`
>> * use `PhantomReference`s to ensure that at least two `MyObject`s have become unreachable. If one is stuck in `finalize()`, at least one is still waiting to be finalized and should show up in the histogram.
>
> Brent Christian has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
> 
>  - Merge branch 'master' into 8298783
>  - convert to WeakRefs, use a RefQ, print ForceGC results
>  - 'return' not needed in lambda
>  - rename counter variables to use 'Count'
>  - test reliability improvements
Changes requested by kbarrett (Reviewer).
test/jdk/java/lang/ref/FinalizerHistogramTest.java line 84:
> 82:             System.out.println("ref1Cleared: " + refQForTwo.ref1Cleared);
> 83:             System.out.println("ref2Cleared: " + refQForTwo.ref2Cleared);
> 84:             System.out.println("trappedCount.intValue(): " + trappedCount.intValue());
This could be made completely reliable, and much simpler, by using WhiteBox.
Don't introduce RefQForTwo.  (It doesn't provide reliable information.)
Use WhiteBox::fullGC() to trigger finalization, instead of ForceGC.
Use (new) WhiteBox::waitForReferenceProcessing() to wait until the
FinalReferences have been enqueued (and mostly trapped in the queue).
-------------
PR Review: https://git.openjdk.org/jdk/pull/24143#pullrequestreview-2797589587
PR Review Comment: https://git.openjdk.org/jdk/pull/24143#discussion_r2062584077
    
    
More information about the core-libs-dev
mailing list