Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8258714: Shenandoah: Process references before evacuation during degen #1859

Closed
wants to merge 1 commit into from

Conversation

rkennke
Copy link
Contributor

@rkennke rkennke commented Dec 21, 2020

Currently, when doing degen-cycle, we process references right before immediate-garbage cleanup. It is imperative that we process references before any immediate garbage gets recycled, or else we may end up with bad references during reference-processing. However, the trouble is that immediate garbage can be recycled even before cleanup phase by recycle-assist. For this reason, we must process references before any evacuation during degen GC. It is also more natural: we process refs before weak roots and class-unloading during concurrent cycle, and should do the same during degen cycle.
(Note that we already prevent recycle-assist in concurrent phase)

The change also adds STW timing for the weak-refs-processing, rather than polluting the conc-weak-refs timings.

Testing: 30 good runs of hotspot_gc_shenandoah, which showed the crash fairly reliably before

Ok?


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed

Issue

  • JDK-8258714: Shenandoah: Process references before evacuation during degen

Reviewers

Download

$ git fetch https://git.openjdk.java.net/jdk pull/1859/head:pull/1859
$ git checkout pull/1859

@bridgekeeper
Copy link

bridgekeeper bot commented Dec 21, 2020

👋 Welcome back rkennke! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk openjdk bot added the rfr Pull request is ready for review label Dec 21, 2020
@openjdk
Copy link

openjdk bot commented Dec 21, 2020

@rkennke The following labels will be automatically applied to this pull request:

  • hotspot-gc
  • shenandoah

When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command.

@openjdk openjdk bot added hotspot-gc hotspot-gc-dev@openjdk.org shenandoah shenandoah-dev@openjdk.org labels Dec 21, 2020
@mlbridge
Copy link

mlbridge bot commented Dec 21, 2020

Webrevs

Copy link
Member

@shipilev shipilev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good, but I think this PR should be against openjdk/jdk16 to get it fixed in JDK 16 (where I think the bug is).

@openjdk
Copy link

openjdk bot commented Dec 21, 2020

@rkennke This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

After integration, the commit message for the final commit will be:

8258714: Shenandoah: Process references before evacuation during degen

Reviewed-by: shade

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been 101 new commits pushed to the master branch:

  • a06cea5: 8258396: SIGILL in jdk.jfr.internal.PlatformRecorder.rotateDisk()
  • d234388: Merge
  • e680ebe: 8258007: Add instrumentation to NativeLibraryTest
  • c04c7e1: 8258002: Update "type" terminology in generated docs
  • 45bd3b9: 8223607: --override-methods=summary ignores some signature changes
  • 59ae054: 8258687: Build broken on Windows after fix for JDK-8258134
  • 1cc98bd: 8256693: getAnnotatedReceiverType parameterizes types too eagerly
  • 1ce2e94: 8256843: [PPC64] runtime/logging/RedefineClasses.java fails with assert: registers not saved on stack
  • 45a150b: 8258134: assert(size == calc_size) failed: incorrect size calculation on x86_32 with AVX512 machines
  • 38593a4: 8257974: Regression 21% in DaCapo-lusearch-large after JDK-8236926
  • ... and 91 more: https://git.openjdk.java.net/jdk/compare/568dc29b9a99d387072ea151bf3bd24cd046fa8a...master

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added the ready Pull request is ready to be integrated label Dec 21, 2020
@rkennke rkennke closed this Dec 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hotspot-gc hotspot-gc-dev@openjdk.org ready Pull request is ready to be integrated rfr Pull request is ready for review shenandoah shenandoah-dev@openjdk.org
Development

Successfully merging this pull request may close these issues.

2 participants