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

wants to merge 1 commit into from


Copy link

@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



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


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



$ git fetch pull/1859/head:pull/1859
$ git checkout pull/1859

Copy link

@bridgekeeper 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 label Dec 21, 2020
Copy link

@openjdk 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 shenandoah labels Dec 21, 2020
Copy link

@mlbridge mlbridge bot commented Dec 21, 2020


Copy link

@shipilev shipilev left a comment

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).

Copy link

@openjdk 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 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/ 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:

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 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
hotspot-gc ready rfr shenandoah
2 participants