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

8277854: The upper bound of GCCardSizeInBytes should be limited to 512 for 32-bit platforms #6569

Closed
wants to merge 1 commit into from

Conversation

DamonFool
Copy link
Member

@DamonFool DamonFool commented Nov 26, 2021

Hi all,

runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java crashes on linux/x86_32 with -XX:GCCardSizeInBytes=1024.

This is because if-XX:GCCardSizeInBytes=1024 then BOTConstants::N_words [1] would be 256.
Then the guarantee [2] always fails due to _bot->offset_array(start_card), which is a u_char value, never equals to 256.

So for 32-bit platforms, the upper bound of GCCardSizeInBytes should be limited to 512.

Thanks.
Best regards,
Jie

[1] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/gc/shared/blockOffsetTable.cpp#L45
[2] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp#L186


Progress

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

Issue

  • JDK-8277854: The upper bound of GCCardSizeInBytes should be limited to 512 for 32-bit platforms

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/jdk pull/6569/head:pull/6569
$ git checkout pull/6569

Update a local copy of the PR:
$ git checkout pull/6569
$ git pull https://git.openjdk.java.net/jdk pull/6569/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 6569

View PR using the GUI difftool:
$ git pr show -t 6569

Using diff file

Download this PR as a diff file:
https://git.openjdk.java.net/jdk/pull/6569.diff

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Nov 26, 2021

👋 Welcome back jiefu! 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 Nov 26, 2021
@openjdk
Copy link

@openjdk openjdk bot commented Nov 26, 2021

@DamonFool The following label will be automatically applied to this pull request:

  • hotspot-gc

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

@openjdk openjdk bot added the hotspot-gc label Nov 26, 2021
@mlbridge
Copy link

@mlbridge mlbridge bot commented Nov 26, 2021

Webrevs

@Hamlin-Li
Copy link

@Hamlin-Li Hamlin-Li commented Nov 26, 2021

Several initial comments:

  • Not sure if the lower bound should also be distinguished between 32 and 64. It's not because of crash, but as you're touching it, should we consider this?
  • Does a CSR needed?
  • A regression test would be helpful.

@DamonFool
Copy link
Member Author

@DamonFool DamonFool commented Nov 26, 2021

Good questions!
Thanks @Hamlin-Li for your review.

Several initial comments:

  • Not sure if the lower bound should also be distinguished between 32 and 64. It's not because of crash, but as you're touching it, should we consider this?

Not sure if there is any benefit to distinguish the lower bounds between 32-bit and 64-bit platforms.
But this pr aims at fixing the crash caused by the incorrect upper bound on 32-bit platforms.
So a separate pr seems better if the lower bound needs to be re-considered.

  • Does a CSR needed?

Maybe not since no VM flags are added or removed and jdk18 hasn't been released yet.
But I'm not sure.

  • A regression test would be helpful.

There is already a jtreg test runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java for this regression.

Thanks.
Best regards,
Jie

@tschatzl
Copy link
Contributor

@tschatzl tschatzl commented Nov 26, 2021

Thanks for spotting this - that slipped past our testing (we do not do much 32 bit testing).

Does a CSR needed?

Maybe not since no VM flags are added or removed and jdk18 hasn't been released yet.
But I'm not sure.

I will talk to the CSR team whether there needs to be an amendment to the CSR for 32 bit platforms. please do not integrate before this has been handled.

Copy link
Contributor

@tschatzl tschatzl left a comment

I think this is good, but I had to amend the CSR (https://bugs.openjdk.java.net/browse/JDK-8275142) for it for this case. As soon as it has been approved again sometime next week, this change can be integrated.
Also fixed the release note.

@openjdk
Copy link

@openjdk openjdk bot commented Nov 26, 2021

@DamonFool 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:

8277854: The upper bound of GCCardSizeInBytes should be limited to 512 for 32-bit platforms

Reviewed-by: tschatzl, mli

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 27 new commits pushed to the master branch:

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 Nov 26, 2021
@DamonFool
Copy link
Member Author

@DamonFool DamonFool commented Nov 26, 2021

I think this is good, but I had to amend the CSR (https://bugs.openjdk.java.net/browse/JDK-8275142) for it for this case. As soon as it has been approved again sometime next week, this change can be integrated. Also fixed the release note.

Sure.
Thanks @tschatzl for your review.

@Hamlin-Li
Copy link

@Hamlin-Li Hamlin-Li commented Nov 27, 2021

  • Not sure if the lower bound should also be distinguished between 32 and 64. It's not because of crash, but as you're touching it, should we consider this?

Not sure if there is any benefit to distinguish the lower bounds between 32-bit and 64-bit platforms. But this pr aims at fixing the crash caused by the incorrect upper bound on 32-bit platforms. So a separate pr seems better if the lower bound needs to be re-considered.

I'm fine with it.

  • Does a CSR needed?

Maybe not since no VM flags are added or removed and jdk18 hasn't been released yet. But I'm not sure.

Please follow Thomas's suggestion.

  • A regression test would be helpful.

There is already a jtreg test runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java for this regression.

I was wondering why it's not caught by regionion test until I saw Thomas' response.

Thanks for clarifying and fixing this.

@DamonFool
Copy link
Member Author

@DamonFool DamonFool commented Nov 27, 2021

Thanks @Hamlin-Li for your review.

@tschatzl
Copy link
Contributor

@tschatzl tschatzl commented Nov 29, 2021

/csr needed

We need a new CSR for this change after all (see https://bugs.openjdk.java.net/browse/JDK-8277891).

@openjdk openjdk bot added the csr label Nov 29, 2021
@openjdk
Copy link

@openjdk openjdk bot commented Nov 29, 2021

@tschatzl this pull request will not be integrated until the CSR request JDK-8277891 for issue JDK-8277854 has been approved.

@openjdk openjdk bot added ready and removed ready csr labels Nov 29, 2021
@DamonFool
Copy link
Member Author

@DamonFool DamonFool commented Nov 29, 2021

@tschatzl this pull request will not be integrated until the CSR request JDK-8277891 for issue JDK-8277854 has been approved.

The CSR had been approved.
So integrate it.
Thanks.

/integrate

@openjdk
Copy link

@openjdk openjdk bot commented Nov 29, 2021

Going to push as commit 3a4a94e.
Since your change was applied there have been 27 commits pushed to the master branch:

Your commit was automatically rebased without conflicts.

@openjdk openjdk bot closed this Nov 29, 2021
@openjdk openjdk bot added integrated and removed ready rfr labels Nov 29, 2021
@openjdk
Copy link

@openjdk openjdk bot commented Nov 29, 2021

@DamonFool Pushed as commit 3a4a94e.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

@DamonFool DamonFool deleted the JDK-8277854 branch Nov 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hotspot-gc integrated
3 participants