[master] RFR: 8371186: Lilliput2: Disable JFR Leak Profiler & related tests until it's fixed with +UseCompactObjectHeaders

Y. Srinivas Ramakrishna ysr at openjdk.org
Wed Nov 5 15:07:10 UTC 2025


On Wed, 5 Nov 2025 10:43:11 GMT, Aleksey Shipilev <shade 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.
>
> 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.

There's an extra one on line 41, which remains.

In general, I realize there isn't a canonical order for these, which if it were adhered to would be good.

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

PR Review Comment: https://git.openjdk.org/lilliput/pull/205#discussion_r2494953967


More information about the lilliput-dev mailing list