RFR: 8280454: G1: ClassLoaderData verification keeps CLDs live that causes problems with VerifyDuringGC during Remark [v3]

Coleen Phillimore coleenp at openjdk.java.net
Wed Jun 1 16:34:41 UTC 2022


On Wed, 1 Jun 2022 10:50:33 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:

>> Hi all,
>> 
>>   can I have reviews for this change that makes a few CLDG iterations no-keepalive during GC pauses?
>> 
>> This fixes a bug where the `VerifyDuringGC` verification otherwise kept alive all classes, effectively disabling class unloading during (g1) concurrent mark.
>> 
>> Afaict this verification code is only every called during GC pauses, so the change should be fine.
>> 
>> As for the change itself, I tried to avoid cluttering the code with `ClassLoaderDataGraphIterator<>` by using typedefs - unfortunately only C++ 17 allows omitting the `<>` if all template parameters are defaulted.
>> 
>> There is also a new test case for just this.
>> 
>> Testing: tier1-5
>> 
>> Thanks,
>>   Thomas
>
> Thomas Schatzl has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Remove unnecessary test change

This seems okay and worth adding the ClassLoaderdataGraphIteratorBase for this case.  Please make the change in my comment though with this change, and retest your test.

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

Marked as reviewed by coleenp (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/8949


More information about the hotspot-runtime-dev mailing list