Hey Adam,

As you probably figured out, those two stacks contain a bunch of JITed
code. The hotspot JVM should provide the facilities for DTrace to
interpret those symbolically. Printing of C symbols use an orthogonal
-- and far simpler -- mechanism.

Can someone from the Apple team comment on this?

Adam

On Fri, Mar 25, 2011 at 11:15 AM, Adam Cath <adam.c...@gmail.com> wrote:
> 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.
>
> _______________________________________________
> dtrace-discuss mailing list
> dtrace-discuss@opensolaris.org
>



-- 
Adam Leventhal, Delphix
http://dtrace.org/blogs/ahl

275 Middlefield Road, Suite 50
Menlo Park, CA 94025
http://www.delphix.com
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to