RFR: 8296469: Instrument VMError::report with reentrant iteration step for register and stack printing [v13]

Axel Boldt-Christmas aboldtch at openjdk.org
Tue May 16 11:03:23 UTC 2023


> Add reentrant step logic to VMError::report with an inner loop which enable the logic to recover at every step of the iteration.
> 
> Before this change, if printing one register/stack position crashes then no more registers/stack positions will be printed.
> 
> After this change even if the VM is unstable and some registers print_location crashes the hs_err printing will recover and keep attempting to print the rest of the registers or stack values.
> 
> Enables the following
> ```C++
> REENTRANT_STEP_IF("printing register info", _verbose && _context && _thread && Universe::is_fully_initialized())
>   os::print_register_info_header(st, _context);
> 
>   REENTRANT_LOOP_START(os::print_nth_register_info_max_index())
>     // decode register contents if possible
>     ResourceMark rm(_thread);
>     os::print_nth_register_info(st, REENTRANT_ITERATION_STEP, _context);
>   REENTRANT_LOOP_END
> 
>   st->cr();
> 
> 
> Testing: tier 1 and compiled Linux-x64/aarch64, MacOS-x64/aarch64, Windows x64 and cross-compiled Linux-x86/riscv/arm/ppc/s390x (GHA and some local)

Axel Boldt-Christmas has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 29 commits:

 - Merge remote-tracking branch 'upstream_jdk/master' into vmerror_report_register_stack_reentrant
 - Feedback: constrain print_register_info continuation value
 - Feedback: print general registers first ppc s390
 - Feedback: Move timeout recording into condition
 - Feedback: improve print_stack_location
 - Feedback: riscv print format
 - Rename and invert should_stop_reattempt_step
 - Fix and clarify reattempt_test_hit_stack_limit
 - Account for guarded stack pages size
 - Remove REATTEMPT_STEP_WITH_NEW_TIMEOUT_IF
 - ... and 19 more: https://git.openjdk.org/jdk/compare/72294c54...ff1e3fc3

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

Changes: https://git.openjdk.org/jdk/pull/11017/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11017&range=12
  Stats: 694 lines in 19 files changed: 382 ins; 78 del; 234 mod
  Patch: https://git.openjdk.org/jdk/pull/11017.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/11017/head:pull/11017

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


More information about the hotspot-dev mailing list