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

8273165: GraphKit::combine_exception_states fails with "matching stack sizes" assert #5330

Closed
wants to merge 2 commits into from

Conversation

iwanowww
Copy link

@iwanowww iwanowww commented Sep 1, 2021

The fix for JDK-8271276 uncovered another problem with incremental inlining through
virtual call sites: receiver null check breaks exception state combining in GraphKit::replace_call()
because the associtated exception path has the JVM state representing the point
right before the call (arguments are on stack).

I propose a conservative fix which bails out the inlining attempt when receiver is not provably non-null.

IMO the proper fix is to always add explicit receiver null check and teach
Block::implicit_null_check() about CallDynamicJava nodes. But that's for a
separate change.

Testing: failing tests, hs-tier1 - hs-tier4


Progress

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

Issue

  • JDK-8273165: GraphKit::combine_exception_states fails with "matching stack sizes" assert

Reviewers

Reviewing

Using git

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

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

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 5330

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

Using diff file

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

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Sep 1, 2021

👋 Welcome back vlivanov! 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.

@iwanowww iwanowww marked this pull request as ready for review Sep 1, 2021
@openjdk openjdk bot added the rfr label Sep 1, 2021
@openjdk
Copy link

@openjdk openjdk bot commented Sep 1, 2021

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

  • hotspot-compiler

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-compiler label Sep 1, 2021
Copy link
Member

@TobiHartmann TobiHartmann left a comment

That looks good to me but I would suggest to use recv_type->maybe_null().

@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 1, 2021

Webrevs

@iwanowww
Copy link
Author

@iwanowww iwanowww commented Sep 1, 2021

I would suggest to use recv_type->maybe_null().

Good point, fixed.

Thanks for the review.

Copy link
Member

@TobiHartmann TobiHartmann left a comment

Looks good.

@openjdk
Copy link

@openjdk openjdk bot commented Sep 1, 2021

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

8273165: GraphKit::combine_exception_states fails with "matching stack sizes" assert

Reviewed-by: thartmann, kvn

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

  • 02822e1: 8272377: assert preconditions that are ensured when created in add_final_edges
  • a58cf16: 8272563: assert(is_double_stack() && !is_virtual()) failed: type check
  • 0e14bf7: 8273176: handle latest VS2019 in abstract_vm_version
  • f1c5e26: 8273206: jdk/jfr/event/gc/collection/TestG1ParallelPhases.java fails after JDK-8159979
  • e600fe1: 8272618: Unnecessary Attr.visitIdent.noOuterThisPath
  • 2fce7cb: 8272963: Update the java manpage markdown source
  • 18a731a: 8269770: nsk tests should start IOPipe channel before launch debuggee - Debugee.prepareDebugee
  • 9c392d0: 8273197: ProblemList 2 jtools tests due to JDK-8273187
  • 3d657eb: 8262186: Call X509KeyManager.chooseClientAlias once for all key types
  • c1e0aac: 8273186: Remove leftover comment about sparse remembered set in G1 HeapRegionRemSet
  • ... and 74 more: https://git.openjdk.java.net/jdk/compare/7f80683cfeee3c069f48d5bce45fa92b2381b518...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 label Sep 1, 2021
Copy link
Contributor

@vnkozlov vnkozlov left a comment

Good.

@iwanowww
Copy link
Author

@iwanowww iwanowww commented Sep 2, 2021

Thanks for the reviews, Tobias and Vladimir.

/integrate

@openjdk
Copy link

@openjdk openjdk bot commented Sep 2, 2021

Going to push as commit 632a7e0.
Since your change was applied there have been 96 commits pushed to the master branch:

  • c2e015c: 8273229: Update OS detection code to recognize Windows Server 2022
  • 0c1b16b: 8273243: Fix indentations in java.net.InetAddress methods
  • 152e669: 8273140: Replace usages of Enum.class.getEnumConstants() with Enum.values() where possible
  • 857a930: 8263375: Support stack watermarks in Zero VM
  • 6cfe314: 8272970: Parallelize runtime/InvocationTests/
  • a9a83b2: 8273256: runtime/cds/appcds/TestEpsilonGCWithCDS.java fails due to Unrecognized VM option 'ObjectAlignmentInBytes=64' on x86_32
  • 1a5a2b6: 8271745: Correct block size for KW,KWP mode and use fixed IV for KWP mode for SunJCE
  • 2f01a6f: 8273157: Add convenience methods to Messager
  • 9689f61: 8272788: Nonleaf ranked locks should not be safepoint_check_never
  • 4ee0dac: 8273248: ProblemList java/lang/instrument/BootClassPath/BootClassPathTest.sh on all configs
  • ... and 86 more: https://git.openjdk.java.net/jdk/compare/7f80683cfeee3c069f48d5bce45fa92b2381b518...master

Your commit was automatically rebased without conflicts.

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

@openjdk openjdk bot commented Sep 2, 2021

@iwanowww Pushed as commit 632a7e0.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hotspot-compiler integrated
3 participants