Hi Jason, It would appear that your shell is a 32-bit process and you're recording the stack on entry to exece rather than the return. That is to say, you're recording the stack of your shell rather than the stack of the 64-bit ls process:
# dtrace -n 'syscall::exece:return{ stack(); ustack(); }'dtrace: description 'syscall::exece:return' matched 1 probe CPU ID FUNCTION:NAME 1 82155 exece:return unix`sys_syscall32+0x1fc 0xfffffd7fff3bd8da Adam On Dec 17, 2008, at 6:53 AM, Jason Zhao wrote: > > > From: Jason Zhao <jason.z...@sun.com> > Date: December 17, 2008 6:48:54 AM PST > To: dtrace-discuss@opensolaris.org > Subject: Why exece syscall on 64-bit OS returns 32-bit address > > > Hi, All > > I have a quick question, I run the following dtrace command on my > Lenovo > T61 which is 64-bit kernel running. > But after that, I found the dtrace return 32-bit address, otherthan > 64-bit address, why does that happen? > Does that mean 64-bit kernel still use 32-bit syscall? > > # isainfo -v > 64-bit amd64 applications > ssse3 cx16 mon sse3 sse2 sse fxsr mmx cmov amd_sysc cx8 tsc fpu > 32-bit i386 applications > ssse3 ahf cx16 mon sse3 sse2 sse fxsr mmx cmov sep cx8 tsc fpu > > > # dtrace -n 'syscall::exece:entry { stack(); ustack() }' > dtrace: description 'syscall::exece:entry ' matched 1 probe <--- run > "/usr/bin/amd64/ls" command on other term. > CPU ID FUNCTION:NAME > 1 59502 exece:entry > unix`_sys_sysenter_post_swapgs+0x14b > > 0xfedb0b85 <------------- 32-bit address > 0x80810f8 > 0x808038e > 0x807d1ed > 0x807cb6f > 0x80710c2 > 0x806f566 > 0x806ee4e > > > Thanks > Jason > > > > _______________________________________________ > dtrace-discuss mailing list > dtrace-discuss@opensolaris.org -- Adam Leventhal, Fishworks http://blogs.sun.com/ahl _______________________________________________ dtrace-discuss mailing list dtrace-discuss@opensolaris.org