RFR: 8255233: InterpreterRuntime::at_unwind should be a JRT_LEAF [v4]
Erik Österlund
eosterlund at openjdk.java.net
Wed Oct 28 09:42:32 UTC 2020
> InterpreterRuntime::at_unwind is called at the very beginning of remove_activation(), to notify concurrent stack processing that a frame is about to be unwound. It is currently a JRT_ENTRY, because it needs a last_Java_frame to see what frame is about to get unwound.
>
> However, there are special return paths used by JVMTI pop frame, that checks if the caller frame is deoptimized, then calls a special path that removes the top activation, assuming that does not enter the deopt handler. The new JRT_ENTRY makes that reasoning invalid.
>
> Therefore, we need this to be a JRT_LEAF, that sets a last Java frame, to make everyone happy. This patch performs that change.
>
> I have run tier 1-5 testing, and manually tested:
>
> while true; do make test JTREG="RETAIN=all" TEST=open/test/hotspot/jtreg/vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn002 TEST_OPTS_JAVA_OPTIONS="-XX:+UseZGC -Xmx2g -XX:ZCollectionInterval=0.0001 -XX:ZFragmentationLimit=0.01 -XX:+VerifyOops -XX:+ZVerifyViews" ; done
>
> Before the fix it crashes ~1/15 runs with a bad oop. After the fix, it doesn't crash. I have run it more times than my tmux buffer fits (for a day), and it does not fail any more with this fix.
>
> Unfortunately, my testing on AArch64 has been stalled for a day, so I have sent out this PR without the testing of those bits being finished. I won't push until I get the results back, of course. But I am expecting that to be fine, as there is nothing special going on there and it compiles. Will post a comment when the complete results have arrived.
Erik Österlund has updated the pull request incrementally with one additional commit since the last revision:
x86 32 bit fix
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/828/files
- new: https://git.openjdk.java.net/jdk/pull/828/files/a9a59f3b..5786f6ce
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=828&range=03
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=828&range=02-03
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/828.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/828/head:pull/828
PR: https://git.openjdk.java.net/jdk/pull/828
More information about the hotspot-dev
mailing list