C++ symbols in jhsdb jstack --mixed

Yasumasa Suenaga suenaga at oss.nttdata.com
Thu Oct 31 01:54:07 UTC 2019


Hi all,

I saw C++ frames in `jhsdb jstack --mixed`, and they were mangled as below:


0x00007ff255a8fa4c      _ZN9JavaCalls11call_helperEP9JavaValueRK12methodHandleP17JavaCallArgumentsP6Thread + 0x6ac
0x00007ff255a8cc1d      _ZN9JavaCalls12call_virtualEP9JavaValueP5KlassP6SymbolS5_P17JavaCallArgumentsP6Thread + 0x33d


We can demangle them via c++filt, but I think it is more convenience if jstack can show demangling symbols.
I think we can demangle in jstack with this patch. If it is accepted, I will file it to JBS and send review request.
What do you think?

   http://cr.openjdk.java.net/~ysuenaga/sa-demangle/

We can get the stack as below after applying this patch:


0x00007ff1aba20a4c      JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*) + 0x6ac
0x00007ff1aba1dc1d      JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, Thread*) + 0x33d


I use abi::__cxa_demangle() for demangling, so this patch adds C++ source to SA.
If it is not comfortable, we can use cplus_demangle().
But this function is provided by libiberty.a, so we need to link it to libsaproc and need to check libiberty.a in configure script.


Thanks,

Yasumasa


More information about the serviceability-dev mailing list