Re: DTrace, kernel loader, unknown probes, enable on load?

From: Mark Johnston <markj_at_freebsd.org>
Date: Fri, 11 Feb 2022 14:23:47 UTC
On Fri, Feb 11, 2022 at 02:10:30PM +0000, Bjoern A. Zeeb wrote:
> Hi,
> 
> one of the drawbacks of Dtrace (and other tracing frameworks out there
> on various OSes) is that they do need a list of probes upfront before
> they can enable.

The probes don't have to exist, add -Z to the dtrace(1) parameters.

> Say I want to trace a kernel module from the moment it is loaded, that
> is currently not possible.

So something like:

# dtrace -n 'fbt::coretemp_identify:entry {stack();}' -Z
# kldload coretemp

ought to work, I think, but it doesn't.  It's been a while since I
looked at this code but I think it might be related to the unimplemented
(on FreeBSD) portion of dtrace_probe_provide().  IIRC that's due to a
lock order reversal...

> What I am wondering is how hard it would be to "ignore" unknown probes
> but enable them the moment on loading matching ones.  I assume that
> will probably need a callback through user space to complicate things
> but it should not be impossible.
>
> In case anyone has some spare time to draft this up, I'll be happily a
> first tester;  otherwise the idea is out at least for someone to find
> it one day ...
> 
> Lots of health,
> /bz
> 
> -- 
> Bjoern A. Zeeb                                                     r15:7
>