RFR: 8300915: G1: incomplete SATB because nmethod entry barriers don't get armed [v4]
Richard Reingruber
rrich at openjdk.org
Wed Jan 25 21:20:40 UTC 2023
> The change makes sure all nmethod entry barriers are armed when a G1 concurrent marking cycle starts by doing it unconditionally in `G1ConcurrentMark::pre_concurrent_start()`. The barrier is needed to add oop constants to the SATB.
>
> This alone would be a conservative/minimal fix but I didn't like that `CodeCache::is_gc_marking_cycle_active()` can return true after a marking cycle start is undone. I.e. `G1ConcurrentMarkThread::_state == Idle && CodeCache::is_gc_marking_cycle_active()` is possible.
> Edit: It felt like an inconsistency but maybe its actually ok not to finish the CC marking cycle when the G1 marking is undone. Please comment...
> The changes in `G1ConcurrentMark::post_concurrent_undo_start()` were made to avoid it.
>
>
> Testing
>
> * Rebased this PR onto [JDK-8297487](https://bugs.openjdk.org/browse/JDK-8297487), replaced related assertions with guarantees, and then executed test/langtools:tier1 in a loop for 12h without seeing the issues reported in [JDK-8299956](https://bugs.openjdk.org/browse/JDK-8299956).
>
> * CI testing at SAP: This includes most JCK and JTREG tiers 1-4, also in Xcomp mode, on the standard platforms and also on ppc64le.
>
> * GHA: build failures because download of apache ant failed. `serviceability/jvmti/vthread/SuspendResumeAll/SuspendResumeAll.java` had a timeout on windows-x64. Should be unrelated. It succeeded in our CI testing.
Richard Reingruber has updated the pull request incrementally with one additional commit since the last revision:
Introduce G1CollectedHeap::finish_codecache_marking_cycle()
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/12194/files
- new: https://git.openjdk.org/jdk/pull/12194/files/e3428846..a706b709
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=12194&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=12194&range=02-03
Stats: 12 lines in 4 files changed: 6 ins; 3 del; 3 mod
Patch: https://git.openjdk.org/jdk/pull/12194.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/12194/head:pull/12194
PR: https://git.openjdk.org/jdk/pull/12194
More information about the hotspot-gc-dev
mailing list