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