RFR: 8352185: Shenandoah: Invalid logic for remembered set verification [v13]
Xiaolong Peng
xpeng at openjdk.org
Wed Mar 26 20:49:17 UTC 2025
On Wed, 26 Mar 2025 00:44:18 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:
>> Xiaolong Peng has updated the pull request incrementally with one additional commit since the last revision:
>>
>> tide up
>
> src/hotspot/share/gc/shenandoah/shenandoahVerifier.cpp line 1060:
>
>> 1058: VerifyRememberedSet verify_remembered_set = _verify_remembered_before_marking;
>> 1059: if (_heap->mode()->is_generational() &&
>> 1060: !_heap->old_generation()->is_mark_complete()) {
>
> Why not the following stronger condition to skip verification? My sense is that the only case we cannot verify is if we do not have marking info _and_ old gen has been left "unparsable" (because of an incomplete/interrupted C&F which may have us look at dead objects -- that are either unparsable because of class unloading, or are parsable but hold cross-gen pointers). In all other cases, we can do a safe and complete verification.
>
>
> is_generational() && !old_gen->is_mark_complete() && !old_gen->is_parsable()
We may not need to worry about it, old_gen becomes not parsable in class unloading phase of a global concurrent GC, marking is already done for the global including old gen, there should be always complete marking for old when old gen is not parsable.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24092#discussion_r2014974376
More information about the shenandoah-dev
mailing list