Adam Cath
2011-03-25 18:15:40 UTC
Hi folks,
I can't get jstack() to yield meaningful results for any Java program on my
Mac. Here's what I've tried:
1) dtrace -n 'hotspot*:::method-entry { trace(copyinstr(arg1, arg2));
jstack(); }'
2) Launch my app with -XX:+ExtendedDTraceProbes
And I get two types of results:
---------------
5 32730
_ZN13SharedRuntime19dtrace_method_entryEP10JavaThreadP13methodOopDesc:method-en
try java/lang/Object
libclient.dylib`JVM_RaiseSignal+0x7cb5b
0x3fcafd0
0x4002ff4
0x380439d
0x3801374
libclient.dylib`JVM_Lseek+0x2317c
libclient.dylib`JVM_Lseek+0x22f24
libclient.dylib`JVM_StartThread+0xa4f
libclient.dylib`JVM_StartThread+0x954
libclient.dylib`JVM_StartThread+0x8e3
libclient.dylib`JVM_StartThread+0x756
libclient.dylib`JVM_StartThread+0x605
libclient.dylib`JNI_CreateJavaVM_Impl+0xc9fe
libSystem.B.dylib`_pthread_start+0x159
libSystem.B.dylib`thread_start+0x22
---------------
6 32730
_ZN13SharedRuntime19dtrace_method_entryEP10JavaThreadP13methodOopDesc:method-en
try org/eclipse/swt/internal/carbon/OS
libclient.dylib`JVM_RaiseSignal+0x7cb5b
0x3ca3d5e
0x3d56ab4
0x3803ec1
0x3803fe5
0x3803fe5
0x380439d
0x3803ec1
0x3803fe5
0x3803fe5
0x3804503
0x3804503
0x3804027
0x3804027
0x3804027
0x3801374
libclient.dylib`JVM_Lseek+0x2317c
libclient.dylib`JVM_Lseek+0x22f24
libclient.dylib`JVM_Lseek+0x22efa
libclient.dylib`JVM_NewInstanceFromConstructor+0xcf2
libclient.dylib`JVM_InvokeMethod+0x401
libclient.dylib`JVM_InvokeMethod+0x178
libjvmlinkage.dylib`JVM_InvokeMethod+0x4f
libjava.jnilib`Java_sun_reflect_NativeMethodAccessorImpl_invoke0+0x26
0x3811490
0x3804027
0x3804027
0x3804503
0x3804027
0x3803ec1
0x3803ec1
0x3803fe5
0x3801374
libclient.dylib`JVM_Lseek+0x2317c
libclient.dylib`JVM_Lseek+0x22f24
libclient.dylib`JVM_Lseek+0x22efa
libclient.dylib`JVM_FindLoadedClass+0xe05
libclient.dylib`JVM_FindLoadedClass+0xc84
java`0x358f
java`0x5b66
Foundation`__NSThreadPerformPerform+0x1fa
CoreFoundation`__CFRunLoopDoSources0+0x61b
CoreFoundation`__CFRunLoopRun+0x42f
CoreFoundation`CFRunLoopRunSpecific+0x1c4
CoreFoundation`CFRunLoopRunInMode+0x61
java`0x51b6
java`0x4bdf
java`0x2335
java`0x27
---------------
These stacks are not terribly informative. It seems unlikely that every
single Java method is called by JVM_RaiseSignal. And of course, there are
those long chains of symbol-less frames, including several which claim to be
recursive (0x3804027 recurs twice? Really?).
Some data points: dtrace does correctly print out the method names, so it is
managing to get some symbol information. Also, the jstack command-line
utility works correctly for the same process.
I'm on Mac OS 10.6.6, using the Apple JVM (I've tried 1.5 and 1.6). I get
the same behavior regardless of what program I run. I asked dap to try it on
his machine and he gets similar nonsense.
I can't get jstack() to yield meaningful results for any Java program on my
Mac. Here's what I've tried:
1) dtrace -n 'hotspot*:::method-entry { trace(copyinstr(arg1, arg2));
jstack(); }'
2) Launch my app with -XX:+ExtendedDTraceProbes
And I get two types of results:
---------------
5 32730
_ZN13SharedRuntime19dtrace_method_entryEP10JavaThreadP13methodOopDesc:method-en
try java/lang/Object
libclient.dylib`JVM_RaiseSignal+0x7cb5b
0x3fcafd0
0x4002ff4
0x380439d
0x3801374
libclient.dylib`JVM_Lseek+0x2317c
libclient.dylib`JVM_Lseek+0x22f24
libclient.dylib`JVM_StartThread+0xa4f
libclient.dylib`JVM_StartThread+0x954
libclient.dylib`JVM_StartThread+0x8e3
libclient.dylib`JVM_StartThread+0x756
libclient.dylib`JVM_StartThread+0x605
libclient.dylib`JNI_CreateJavaVM_Impl+0xc9fe
libSystem.B.dylib`_pthread_start+0x159
libSystem.B.dylib`thread_start+0x22
---------------
6 32730
_ZN13SharedRuntime19dtrace_method_entryEP10JavaThreadP13methodOopDesc:method-en
try org/eclipse/swt/internal/carbon/OS
libclient.dylib`JVM_RaiseSignal+0x7cb5b
0x3ca3d5e
0x3d56ab4
0x3803ec1
0x3803fe5
0x3803fe5
0x380439d
0x3803ec1
0x3803fe5
0x3803fe5
0x3804503
0x3804503
0x3804027
0x3804027
0x3804027
0x3801374
libclient.dylib`JVM_Lseek+0x2317c
libclient.dylib`JVM_Lseek+0x22f24
libclient.dylib`JVM_Lseek+0x22efa
libclient.dylib`JVM_NewInstanceFromConstructor+0xcf2
libclient.dylib`JVM_InvokeMethod+0x401
libclient.dylib`JVM_InvokeMethod+0x178
libjvmlinkage.dylib`JVM_InvokeMethod+0x4f
libjava.jnilib`Java_sun_reflect_NativeMethodAccessorImpl_invoke0+0x26
0x3811490
0x3804027
0x3804027
0x3804503
0x3804027
0x3803ec1
0x3803ec1
0x3803fe5
0x3801374
libclient.dylib`JVM_Lseek+0x2317c
libclient.dylib`JVM_Lseek+0x22f24
libclient.dylib`JVM_Lseek+0x22efa
libclient.dylib`JVM_FindLoadedClass+0xe05
libclient.dylib`JVM_FindLoadedClass+0xc84
java`0x358f
java`0x5b66
Foundation`__NSThreadPerformPerform+0x1fa
CoreFoundation`__CFRunLoopDoSources0+0x61b
CoreFoundation`__CFRunLoopRun+0x42f
CoreFoundation`CFRunLoopRunSpecific+0x1c4
CoreFoundation`CFRunLoopRunInMode+0x61
java`0x51b6
java`0x4bdf
java`0x2335
java`0x27
---------------
These stacks are not terribly informative. It seems unlikely that every
single Java method is called by JVM_RaiseSignal. And of course, there are
those long chains of symbol-less frames, including several which claim to be
recursive (0x3804027 recurs twice? Really?).
Some data points: dtrace does correctly print out the method names, so it is
managing to get some symbol information. Also, the jstack command-line
utility works correctly for the same process.
I'm on Mac OS 10.6.6, using the Apple JVM (I've tried 1.5 and 1.6). I get
the same behavior regardless of what program I run. I asked dap to try it on
his machine and he gets similar nonsense.