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
