RFR(S): 8191049: Add alternate version of pns() that is callable from within hotspot source
Thomas Stüfe
thomas.stuefe at gmail.com
Fri Nov 10 08:11:04 UTC 2017
Hi Chris,
looks fine as a debugging aid.
But it occurred to me that it may be a bit dangerous to call this from
non-errorhandler settings. I recall seeing quite a few secondary crashes in
VMError::print_native_stack() in hs-err files over time. Especially for
native non-java threads. Usually this did not matter that much because
these crashes are handled by secondary error handling when printing the
hs-err file. But if we call it outside of error handling, we are on our own.
So. IMHO, to use this functions as a debugging aid is fine, if one can
accept a slight risk of crashing the VM. If this is not acceptable, may we
need some more tests for this function?
Kind Regards, Thomas
On Thu, Nov 9, 2017 at 9:29 PM, Chris Plummer <chris.plummer at oracle.com>
wrote:
> Hi,
>
> Please review the following:
>
> https://bugs.openjdk.java.net/browse/JDK-8191049
>
> diff --git a/src/hotspot/share/utilities/debug.cpp
> b/src/hotspot/share/utilities/debug.cpp
> --- a/src/hotspot/share/utilities/debug.cpp
> +++ b/src/hotspot/share/utilities/debug.cpp
> @@ -631,6 +631,24 @@
> VMError::print_native_stack(tty, fr, t, buf, sizeof(buf));
> }
>
> +//
> +// This version of pns() will not work when called from the debugger, but
> is
> +// useful when called from within hotspot code. The advantages over pns()
> +// are not having to pass in any arguments, and it will work on
> Windows/x64.
> +//
> +extern "C" void pns2() { // print native stack
> + Command c("pns2");
> + static char buf[O_BUFLEN];
> + if (os::platform_print_native_stack(tty, NULL, buf, sizeof(buf))) {
> + // We have printed the native stack in platform-specific code,
> + // so nothing else to do in this case.
> + } else {
> + Thread* t = Thread::current_or_null();
> + frame fr = os::current_frame();
> + VMError::print_native_stack(tty, fr, t, buf, sizeof(buf));
> + }
> +}
> +
> #endif // !PRODUCT
>
> There is also a pre-existing thread with some discussion:
>
> http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2
> 017-November/025134.html
>
> thanks,
>
> Chris
>
>
More information about the hotspot-dev
mailing list