What is wrong with dtrace's stack()?

Lev Serebryakov lev at FreeBSD.org
Sun Oct 21 21:37:34 UTC 2018


Hello Conrad,

Sunday, October 21, 2018, 8:21:43 PM, you wrote:

> Your assembler dump offsets are in decimal.  Look for offset 0x33 =
> +51, not +33.
 Problem is, sosend() is not very interesting by itself, and looks like
several layers of stack are always lost.

 I see a lot of stacks like this:

 kernel`lock_delay+0x42
 kernel`soo_write+0x33
 kernel`dofilewrite+0x79
 kernel`sys_write+0xc3
 kernel`amd64_syscall+0x332
 kernel`0xffffffff8086c87d

 But event sosend() doesn't call lock_delay(), so it is impossible to
understand why do lock_delay() seen 41932 times in 60 seconds at top of the
stack. Where are all call stack?! All these functions could not be inlined,
as sosend() is located in other translation unit and it calls function by
pointer, this call could not be inlined too.


-- 
Best regards,
 Lev                            mailto:lev at FreeBSD.org



More information about the freebsd-hackers mailing list