Hi Yasumasa,
Looks good.
thanks,
Chris
On 10/21/19 7:02 PM, Yasumasa Suenaga wrote:
Hi Chris,
Thanks for your comment! I uploaded new webrev:
http://cr.openjdk.java.net/~ysuenaga/JDK-8232592/webrev.01/
So what does it mean if it is an NMethod but is not native and names
!= null. Should this ever happen? It seems odd that we don't print
out the frame type in this case, and also don't call printUnknown().
I guess it might happen when call nmethod from JNI.
It would be handled as valid compiled code.
```
166 // print java frames, if any
167 if (names != null && names.length != 0) {
168 // print java frame(s)
169 for (int i = 0; i < names.length; i++) {
170 out.println(names[i]);
171 }
172 }
```
Thanks,
Yasumasa
On 2019/10/22 2:25, Chris Plummer wrote:
Hi Yasumasa,
The call to getJavaNames() is not needed if the method is native. It
should be moved into the else block:
if (cb.isNMethod()) {
if (cb.isNativeMethod()) {
out.print(((CompiledMethod)cb).getMethod().externalNameAndSignature());
long diff = pc.minus(cb.codeBegin());
if (diff != 0L) {
out.print(" + 0x" +
Long.toHexString(diff));
}
out.println(" (Native method)");
} else {
names = getJavaNames(th,
f.localVariableBase());
if (names == null || names.length
== 0) {
// just print compiled code,
if can't determine method
out.println("<Unknown compiled code>");
}
}
} else if (cb.isBufferBlob()) {
So what does it mean if it is an NMethod but is not native and names
!= null. Should this ever happen? It seems odd that we don't print
out the frame type in this case, and also don't call printUnknown().
thanks,
Chris
On 10/18/19 1:38 AM, Yasumasa Suenaga wrote:
Hi all,
Please review this change.
JBS: https://bugs.openjdk.java.net/browse/JDK-8232592
webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8232592/webrev.00/
I run `jhsdb jstack --mixed` to JShellToolProvider process, then I
saw <Unknown compiled code>
in the stack as below:
```
"process reaper" #13 daemon prio=10 tid=0x00007f959c328000
nid=0x1285 runnable [0x00007f9578025000]
java.lang.Thread.State: RUNNABLE
JavaThread state: _thread_in_native
0x00007f95a27c5596 __waitpid + 0x56
0x00007f958c601d79 <Unknown compiled code>
0x00007f9585c5b4ac * java.lang.ProcessHandleImpl$1.run() bci:8
line:138 (Compiled frame)
```
0x7f958c601d79 is native method. jstack mixed mode should handle it.
This patch passed all tests on submit repo
(mach5-one-ysuenaga-JDK-8232592-20191018-0600-6011163).
Thanks,
Yasumasa