RFR: 8296469: Instrument VMError::report with reentrant iteration step for register and stack printing [v5]
Axel Boldt-Christmas
aboldtch at openjdk.org
Mon Jan 23 14:29:05 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 11 commits:
- Copyright
- Rework logic and use continuation state for reattempts
- Merge remote-tracking branch 'upstream_jdk/master' into vmerror_report_register_stack_reentrant
- Restructure os::print_register_info interface
- Code syle and line length
- Merge Fix
- Merge remote-tracking branch 'upstream_jdk/master' into vmerror_report_register_stack_reentrant
- Fix whitespace
- Add reentrant reentry limits
- Add os::print_register_info_header
- ... and 1 more: https://git.openjdk.org/jdk/compare/45e4e009...33da9b2a
-------------
Changes: https://git.openjdk.org/jdk/pull/11017/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11017&range=04
Stats: 515 lines in 17 files changed: 192 ins; 79 del; 244 mod
Patch: https://git.openjdk.org/jdk/pull/11017.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/11017/head:pull/11017
PR: https://git.openjdk.org/jdk/pull/11017
More information about the hotspot-dev
mailing list