Why my DTrace script does not work after installing a new kernel without reboot

John-Mark Gurney jmg at funkthat.com
Sun Oct 28 19:00:19 UTC 2018


Mark Johnston wrote this message on Sat, Oct 27, 2018 at 18:53 -0400:
> On Sun, Oct 28, 2018 at 12:40:37AM +0200, Andreas Longwitz wrote:
> > I have a simple, probably stupid question. I run FreeBSD 10.4 Stable
> > r338093 and use the script
> > 
> > #!/usr/sbin/dtrace -s
> > 
> > dtrace:::BEGIN
> > {
> > printf("pf_default_rule.timeout[2/16/17]=%d/%d/%d\n",
> >   kernel`pf_default_rule.timeout[2], kernel`pf_default_rule.timeout[16],
> >   kernel`pf_default_rule.timeout[17]);
> > }
> > 
> > The output normally is
> >   pf_default_rule.timeout[2/16/17]=86400/6000/12000
> > 
> > But when I change the sourcefile /sys/netpfil/pf/pf.c trying a patch and
> > build and install the new kernel but without reboot, then the output of
> > the script is wrong:
> > 
> >   pf_default_rule.timeout[2/16/17]=3237216124/0/0
> > 
> > After reboot everything works again.
> 
> Does your patch change the layout of the timeout structure?  If so, the
> problem is that dtrace(1) is using the CTF from kern.bootfile, but that
> doesn't match the layout of the structures used by the running kernel.

Except that the default make installkernel will adjust kern.bootfile to
point to the correct old location..

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the freebsd-dtrace mailing list