RFR: 8343767: Enumerate StubGen blobs, stubs and entries and generate code from declarations [v6]

Vladimir Ivanov vlivanov at openjdk.org
Wed Nov 27 02:55:46 UTC 2024


On Tue, 26 Nov 2024 09:58:08 GMT, Andrew Dinn <adinn at openjdk.org> wrote:

>> Implementation of JDK-8343767
>
> Andrew Dinn has updated the pull request incrementally with one additional commit since the last revision:
> 
>   fix issue with x86 avx3 array copy

Thanks, test results look much better now. Finally hit code buffer overflow on x86 you mentioned earlier (so far, single occurrence).

It happened on windows-x64 w/  AVX512 (Ice Lake SP) and ZGC enabled.

#  Internal Error (.../codeBuffer.hpp:200), pid=12224, tid=45132
#  assert(allocates2(pc)) failed: not in CodeBuffer memory: 0x0000022aa93c4860 <= 0x0000022aa93d14c1 <= 0x0000022aa93d14c0

It crashed at the very end in `generate_final_stubs`.

  report_vm_error+0x5b  (debug.cpp:193)
  CodeSection::set_end+0x97  (codeBuffer.hpp:200)
  Assembler::movdqu+0x12a  (assembler_x86.cpp:3450)
  MacroAssembler::movdqu+0xb8  (macroAssembler_x86.cpp:2639)
  ZRuntimeCallSpill::restore+0x7a  (zBarrierSetAssembler_x86.cpp:122)
  ZBarrierSetAssembler::load_at+0x2ae  (zBarrierSetAssembler_x86.cpp:280)
  MacroAssembler::access_load_at+0x127  (macroAssembler_x86.cpp:6038)
  MacroAssembler::load_heap_oop+0x98  (macroAssembler_x86.cpp:6057)
  StubGenerator::generate_upcall_stub_load_target+0x19e  (stubGenerator_x86_64.cpp:3989)
  StubGenerator::generate_final_stubs+0x41a  (stubGenerator_x86_64.cpp:4171)


I checked on `linux-x64` and the space is pretty tight there with ZGC and AVX512 enabled:

$ jdk/bin/java -XX:UseAVX=3 -XX:+UseZGC -XX:+ForceUnreachable -Xlog:stubs
...
[0.372s][info][stubs] StubRoutines (finalstubs)  [0x00007fdd87bc99e0, 0x00007fdd87bd5e70] used: 46091, free: 4229
...
``` 

Do you expect any increase in total stub sizes from your changes?

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

PR Comment: https://git.openjdk.org/jdk/pull/21957#issuecomment-2502579263


More information about the hotspot-dev mailing list