RFR[S] 8241158 SA TestHeapDumpForInvokeDynamic.java fails when CDS archive is relocated
Chris Plummer
chris.plummer at oracle.com
Tue Apr 14 22:34:45 UTC 2020
[Not a review]
Hi Ioi,
Your ProblemList.txt is out of date. All those Solaris entries for
8193639 are now gone.
thanks,
Chris
On 4/14/20 3:01 PM, Ioi Lam wrote:
> https://bugs.openjdk.java.net/browse/JDK-8241158
> http://cr.openjdk.java.net/~iklam/jdk15/8241158-sa-heap-dump-fails.v01/
>
> This is a bug in the CDS relocation code. When
> -XX:ArchiveRelocationMode=1 is
> specified, the CDS archive is mapped to an address picked by the OS
> (instead of the default address 0x800000000). As a result, we need to
> patch
> the native Klass* pointers inside java.lang.Class instances that are
> stored in the CDS archived heap region.
>
> Before this fix, the patching is done incrementally, when a class is
> resolved.
> However, when SA tries to do a heap dump, it may see a java.lang.Class
> instance
> that is not yet resolved, whose Klass* pointer has not been patched.
> Dereferencing the unpatched pointer causes SA to fail.
>
> (The failure happens on macos only, probably because the invalid
> dereference
> causes different exceptions on other platforms due to specific memory
> layout,
> and SA is able to handle such exceptions and limp on).
>
> The fix is to unconditionally patch all the Klass* pointers during VM
> initialization.
>
> We already patch a lot of stuff at start-up when the CDS archive is
> relocated,
> so doing a little patching more doesn't hurt.
>
> ----
>
> Passed mach5 tiers 1-4. Ran the failed test manually on macos and it
> passed.
>
> Thanks
> - Ioi
More information about the hotspot-runtime-dev
mailing list