RFR: 8296875: Generational ZGC: Refactor loom code

Erik Österlund eosterlund at openjdk.org
Mon Nov 14 10:15:41 UTC 2022


On Sat, 12 Nov 2022 08:08:15 GMT, Fei Yang <fyang at openjdk.org> wrote:

> PS: I see JVM crashes when running Skynet with extra VM option: -XX:+VerifyContinuations on linux-aarch64 platform.
> 
> $java --enable-preview -XX:+VerifyContinuations Skynet
> 
> ```
> # A fatal error has been detected by the Java Runtime Environment:
> 
> # after -XX: or in .hotspotrc:  SuppressErrorAt=#
> #  Internal Error/stackChunkOop.cpp (/home/realfyang/openjdk-jdk/src/hotspot/share/oops/stackChunkOop.cpp:433), pid=1904185:433, tid=1904206
> 
> [thread 1904216 also had an error]#  assert(_chunk->bitmap().at(index)) failed: Bit not set at index 208 corresponding to 0x0000000637c512d0
> 
> #
> # JRE version: OpenJDK Runtime Environment (20.0) (fastdebug build 20-internal-adhoc.realfyang.openjdk-jdk)
> # Java VM: OpenJDK 64-Bit Server VM (fastdebug 20-internal-adhoc.realfyang.openjdk-jdk, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
> ```

Thanks for finding that. Turns out that the verification code for the stack chunk bitmap expected entries even when the value is null, while the logic that added bitmap entries didn't add if it was null. I fixed it by making sure even null entries are added to the bitmap. While it doesn't really matter if they are added or not, I think it would be the least surprising if iterating over the oops with and without the bitmap yields the same result. I have verified manually with all GCs that Skynet works with the verification flag, on x86_64 and AArch64.

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

PR: https://git.openjdk.org/jdk/pull/11111


More information about the hotspot-dev mailing list