On Fri, 19 Jun 2026 03:09:42 GMT, Serguei Spitsyn <[email protected]> wrote:

> This update fixes the test bug which was initially filed as a Valhalla bug 
> but then found to be NOT Valhalla specific.
> The static variable `objectCount` is used for two different purposes:
>  - to count current walked objects number
>  - as a number to tag objects
> 
> This leads to mismatches in indexes calculations.
> For instance the `ObjectFree` event callback decrements the `objectCount` 
> number. Then the `objectCountMax` can be smaller than some of the actual 
> indexes.
> The fix does:
>  - adds a fragment to force GC's with the JVMTI `ForceGarbageCollection` to 
> make the failure well reproducible
>  - split `objectCount` into: `objectCount` and `objectTagCount`
>  - `objectTagCount` is used to set the object tags and value of the 
> `objectCountMax`
>  - a couple of the `ind` boundary checks are also corrected
> 
> Testing:
>  - Executed the test locally: 
> `jvmti/IterateOverReachableObjects/iterreachobj002`
>  - TBD: Submit mach5 tiers 1-3 to be safe
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

test/hotspot/jtreg/vmTestbase/nsk/jvmti/IterateOverReachableObjects/iterreachobj002/iterreachobj002.cpp
 line 354:

> 352:             /* This fragment is needed to stress test execution with 
> extra GC's. */
> 353:             for (int gcCount = 0; gcCount < 5; gcCount++) {
> 354:                 NSK_DISPLAY1("Calling ForceGarbageCollection #%d before 
> saving objectCountMax\n", gcCount + 1);

The message says the GC runs before saving objectCountMax, but the code does 
the opposite: it saves objectCountMax first, then forces GC.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/31585#discussion_r3447941874

Reply via email to