William J. Kucharski
2006-Aug-23 10:54 UTC
[dtrace-discuss] DTrace erroneously truncates return values to 32 bits on 32-bit kernels
I''ve just filed CR 6462995 on this but Adam Leventhal suggested I mention it here as a heads up: There''s currently a bug in DTrace where 64-bit return values are truncated to 32 bits in length on 32-bit kernels. For example, given this script: #pragma D option quiet fbt::getpid:return { printf("\n\tpid %d ppid %d\n", pid, ppid); printf("\trval 0x%x pid %d ppid %d\n", args[1], args[1] & 0xffffffff, args[1] >> 32); } When run on a 64-bit kernel, it will produce output as expected, e.g.: # dtrace -s ./getpid.d pid 665021 ppid 133049 rval 0x207b9000a25bd pid 665021 ppid 133049 But when run on a 32-bit kernel, the top 32 bits of the return value will go missing: # dtrace -s ./getpid.d pid 100246 ppid 1 rval 0x18796 pid 100246 ppid 0 Adam already knows what''s wrong. :-) This message posted from opensolaris.org