What is wrong with dtrace's stack()?

Lev Serebryakov lev at FreeBSD.org
Wed Oct 24 17:26:36 UTC 2018


On 24.10.2018 20:14, Ryan Stone wrote:


> ia32_pause() is an inline function.  How does dtrace map instruction
> pointers to symbol names?  Is it getting that mapping from some CTF
> data, and is that CTF data aware of inline functions?
 It looks like plausable explanation, but why sometimes it pick-up
"middle layer" like this:

              kernel`ia32_pause+0x6
              kernel`tcp_usr_send+0x131
              kernel`sosend_generic+0xf61

 And sometimes doesn't:

              kernel`ia32_pause+0x7
              kernel`sosend_generic+0xf61

 As I said, these stacks are equivalent, I've proved it (ok, it is not
mathematical proof, of course) with custom SDT probes around this
"`tcp_usr_send+0x131" place.

-- 
// Lev Serebryakov

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 963 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20181024/9a2a5a1b/attachment.sig>


More information about the freebsd-hackers mailing list