RFR: 8272586: emit abstract machine code in hs-err logs

Vladimir Kozlov kvn at openjdk.java.net
Wed Oct 6 15:45:08 UTC 2021


On Thu, 9 Sep 2021 16:56:57 GMT, Doug Simon <dnsimon at openjdk.org> wrote:

> This enhances hs-err logs to:
> * Show the [abstract machine code](https://bugs.openjdk.java.net/browse/JDK-8213084) of the crashing frame if a disassembler is not installed.
> * Show machine code for the top frames on the native stack.
> 
> An interpreter or stub frame is only shown if it is the crashing frame.
> 
> A sample of the enhanced hs-err log can be seen [here](https://bugs.openjdk.java.net/secure/attachment/96664/hs_err_pid7179.log).

Look good in general. I have few small comments.

src/hotspot/share/utilities/vmError.cpp line 247:

> 245:  * Determines if the code unit denoted by `owner` should be printed.
> 246:  * If this method returns true, then `owner` has been added to `printed`.
> 247:  * If `owner` was already in `printed`, this methods returns false.

Is it because of recursive calls?

src/hotspot/share/utilities/vmError.cpp line 324:

> 322:   // non-walkable C frame. Use frame.sender() for java frames.
> 323:   frame invalid;
> 324:   if (t && t->is_Java_thread()) {

use `(t != nullptr)` explicitly

src/hotspot/share/utilities/vmError.cpp line 363:

> 361:       st->cr();
> 362:       fr = next_frame(fr, t);
> 363:       if (!fr.pc()) {

Please use `== nullptr`

src/hotspot/share/utilities/vmError.cpp line 918:

> 916: 
> 917:        frame fr = os::fetch_frame_from_context(_context);
> 918:        for (int count = 0; count < printed_len && fr.pc(); ) {

Use `(fr.pc() != nullptr)`

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

PR: https://git.openjdk.java.net/jdk/pull/5446


More information about the hotspot-dev mailing list