RFR: 8275638: GraphKit::combine_exception_states fails with "matching stack sizes" assert [v3]

Roland Westrelin roland at openjdk.java.net
Tue Dec 7 08:25:50 UTC 2021


> Root cause is identical to 8273165 AFIU: late inline of a virtual call
> can throw from 2 different paths (null check and the call
> itself). That breaks because the logic for exceptions expects the
> stack for all paths that throw exceptions to have the same stack size.
> 
> AFAIU, the stack doesn't matter exception handling: either the
> exception is caught by a exception handler and then the stack is
> popped and the exception is pushed or, the exception is rethrown to
> the caller in which case the current stack is also popped (that is the
> jvm state for the current method). As a consequence the fix I propose
> is to ignore the stack in GraphKit::combine_exception_states().
> 
> AFAIU, the same fix would work for 8273165 but I left the current work
> around as is: not sure if we want to be conservative for now or not

Roland Westrelin has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:

 - comment
 - Merge branch 'master' into JDK-8275638
 - alternate fix
 - make test runnable with release build
 - more
 - fix

-------------

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/6572/files
  - new: https://git.openjdk.java.net/jdk/pull/6572/files/e3a04acd..5469d079

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=6572&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=6572&range=01-02

  Stats: 11463 lines in 534 files changed: 7414 ins; 1974 del; 2075 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6572.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6572/head:pull/6572

PR: https://git.openjdk.java.net/jdk/pull/6572


More information about the hotspot-compiler-dev mailing list