Date: Fri, 11 Feb 2022 10:47:12 -0500 From: Mark Johnston <markj@freebsd.org> To: "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net> Cc: dtrace@freebsd.org Subject: Re: DTrace, kernel loader, unknown probes, enable on load? Message-ID: <YgaFAJ7XAmKxB3w8@nuc> In-Reply-To: <YgZxcxon9xJxEpbR@nuc> References: <alpine.BSF.2.00.2202111403340.68830@ai.fobar.qr> <YgZxcxon9xJxEpbR@nuc>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Feb 11, 2022 at 09:23:47AM -0500, Mark Johnston wrote: > 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... I see now: the problem is that FBT registers probes after KLD SYSINITs and module hooks are invoked. See dtrace_module_loaded(), which (asynchronously) calls dtrace_enabling_matchall() to see if any newly registered probes match pending "retained enablings", in this case, enablings created by dtrace -Z. We could perhaps add a new eventhandler that gets called before anything in the KLD is executed, and register probes at that point. Or, if the code you're interested runs after SYSINITs are finished, then -Z might be sufficient today. > > 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 > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?YgaFAJ7XAmKxB3w8>