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

Reply via email to