[master] RFR: 8371186: Lilliput2: Disable JFR Leak Profiler & related tests until it's fixed with +UseCompactObjectHeaders
Aleksey Shipilev
shade at openjdk.org
Wed Nov 5 10:47:11 UTC 2025
On Tue, 4 Nov 2025 02:03:03 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:
> The JFR leak profiler stores an encoded reference to a (canonical) path from roots to each of a set of sampled objects after GC at some interval in the space available in the displaced mark word on the sampled object's header. With Lilliput2, there isn't enough space to store such information in the header. Instead, we probably want to use a side hashtable to temporarily keep such information. We've filed a ticket to do that work.
>
> Meanwhile, in this PR, we disable the Leak Profiler when Lilliput2's `UseCompactObjectHeaders` is enabled. (This is already done in the Leak Profiler, e.g., for Shenanodah GC.)
>
> We also disable tests of the LeakProfiler when Lilliput2's UseCompactObjectHeaders is enabled.
>
> The JFR Leak Profiler workaround and the disabled tests will need to be re-enabled once the Leak Profiler is reworked to not use the object header in this manner in Lilliput2 with +UseCompactObjectHeaders.
>
> The PR also fixes some comments and fixes 3 jfr/event/allocation tests that needed to know about the correct new array header size overhead.
>
> ### Testing
> - [x] `TEST_VM_FLAGLESS=true make test TEST="test/jdk/jdk/jfr" JTREG="JAVA_OPTIONS=+/-UseCompactObjectHeaders"`
> - passes all tests with `-UseCompactObjectHeaders`
> - skips previously failing tests with `+UseCompactObjectHeaders`
> - [x] `TEST_VM_FLAGLESS=true make test TEST="test/jdk/jdk/jfr/event/allocation" JTREG="JAVA_OPTIONS=+/-UseCompactObjectHeaders"`
> - passes all tests with `+/-UseCompactObjectHeaders`
> - would fail with `+UseCompactObjectHeaders` without fix
>
> ### For followup
> - Recorded failing tests which will be re-enabled when [JDK-8371185](https://bugs.openjdk.org/browse/JDK-8371185) is fixed.
Generally, avoid doing whitespace changes and test tag reshufflings, especially if they deviate from upstream? These would cause more merge conflicts (and thus opportunities for bugs) later.
test/jdk/jdk/jfr/event/oldobject/TestClassLoaderLeak.java line 43:
> 41: * @requires vm.flagless
> 42: * @requires vm.hasJFR
> 43: * @requires vm.flagless
Why `vm.flagless` was removed? It stays the same in other tests.
-------------
PR Review: https://git.openjdk.org/lilliput/pull/205#pullrequestreview-3421174399
PR Review Comment: https://git.openjdk.org/lilliput/pull/205#discussion_r2493923665
More information about the lilliput-dev
mailing list