> # Issue
> Many AppCDS test asserts with `assert(false) failed: Address 
> 0x00007f0dfc2923e0 for <unknown>/('verify_oop: r11: broken oop oop_result, 
> "broken oop in call_VM_base" 
> (src/hotspot/cpu/x86/macroAssembler_x86.cpp:1353)') is missing in AOT Code 
> Cache addresses table` when run with `-Xcomp --enable-preview`
> 
> # Cause
> The crash happens during AOT cache dumping seemingly because 
> `-XX:+VerifyOops` causes the adapter to use addresses that the AOT doesn't 
> know about. In particular, `verify_oop`/`verify_oop_addr` add a message 
> C‑string and reference the verify‑oop stub entry. 
> `AOTCodeCache::write_relocations()` tries to serialize those relocations, 
> `AOTCodeAddressTable::id_for_address()` can’t resolve them and crashes.
> In this case the issue happens with `--enable-preview` because it creates an 
> adapter for scalarized arguments and, after creating the oop from the 
> arguments, `get_vm_result_oop` invokes `verify_oop_msg`. Without 
> `--enable-preview` the path is never taken and the missing "registration" 
> isn’t exercised (I fear that this crash could potentially be triggered by 
> some other (non preview) code but the fix doesn't need to distinguish between 
> preview/non-preview).
> 
> # Fix
> Apparently we need to make the two addresses used by `verify_oop_msg` 
> "visible" to AOT: register the debug message string and add 
> `StubRoutines::verify_oop_subroutine_entry_address()` to the AOT “extrs” 
> table.
> 
> # Testing
> Tier 1-3+
> Failing CDS tests before and after

Damon Fenacci has updated the pull request incrementally with two additional 
commits since the last revision:

 - JDK-8379913: disable adapters caching if VerifyOops
 - JDK-8379913: revert adding cache entries

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

Changes:
  - all: https://git.openjdk.org/valhalla/pull/2233/files
  - new: https://git.openjdk.org/valhalla/pull/2233/files/cacde664..8588e531

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=valhalla&pr=2233&range=01
 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=2233&range=00-01

  Stats: 13 lines in 3 files changed: 1 ins; 10 del; 2 mod
  Patch: https://git.openjdk.org/valhalla/pull/2233.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2233/head:pull/2233

PR: https://git.openjdk.org/valhalla/pull/2233

Reply via email to