[DTrace-devel] [PATCH 1/5] udp: new provider

Kris Van Hees kris.van.hees at oracle.com
Thu Aug 28 19:40:20 UTC 2025


On Thu, Aug 28, 2025 at 03:25:39PM -0400, Eugene Loh wrote:
> On 8/28/25 13:56, Eugene Loh wrote:
> 
> > Anyhow, testing x86 and arm for OL8/UEK6 OL8/UEK7 OL9/UEK7 OL9/UEK8
> > OL10/UEK8, I get
> >     test/unittest/udp/tst.ipv6localudp.sh: FAIL: expected results differ.
> > for
> >     x86/OL8/UEK7
> >     x86/OL9/UEK7
> >     x86/OL9/UEK8
> >     x86/OL10/UEK8
> >     arm/OL10/UEK8
> > If you like, I can investigate more or report more details.  I just
> > didn't want to dive in too deep without checking in with you first.
> 
> I took a quick and sloppy look at this.  I looked at only one VM. The
> failure was:
> 
>     test/unittest/udp/tst.ipv6localudp.sh
>     Diff against expected:
>      Minimum UDP events seen
> 
>     -ip:::send - yes
>     +ip:::send - no
>     -ip:::receive - yes
>     +ip:::receive - no
>     -udp:::send - yes
>     +udp:::send - no
>      udp:::receive - yes
> 
> I tried:
> 
>     diff --git a/libdtrace/dt_prov_udp.c b/libdtrace/dt_prov_udp.c
>     @@ -31,7 +31,7 @@ static probe_dep_t probes[] = {
>              { "send",
>                DTRACE_PROBESPEC_NAME,   "fbt::ip_send_skb:entry" },
>              { "send",
>     -          DTRACE_PROBESPEC_NAME,   "fbt::ip6_send_skb:entry" },
>     +          DTRACE_PROBESPEC_NAME,   "rawfbt::ip6_send_skb:entry" },
>              { NULL, }
>      };
> 
>     diff --git a/libdtrace/dt_prov_ip.c b/libdtrace/dt_prov_ip.c
>     @@ -21,11 +21,11 @@ static probe_dep_t probes[] = {
>              { "receive",
>                DTRACE_PROBESPEC_NAME, "fbt::ip_local_deliver:entry" },
>              { "receive",
>     -          DTRACE_PROBESPEC_NAME,   "fbt::ip6_input:entry" },
>     +          DTRACE_PROBESPEC_NAME,   "rawfbt::ip6_input:entry" },
>              { "send",
>                DTRACE_PROBESPEC_NAME, "fbt::ip_finish_output:entry" },
>              { "send",
>     -          DTRACE_PROBESPEC_NAME, "fbt::ip6_finish_output:entry" },
>     +          DTRACE_PROBESPEC_NAME, "rawfbt::ip6_finish_output:entry" },
>              { NULL, }
>      };
> 
> (The last change is also in another patch I recently posted and you R-b.) 
> With these changes on that VM, the test passes.
> 
> The whole thing suggests to me that we need a better audit of such issues,
> better understanding, and more/better tests.

It might also be worth mentioning that it is possible to specify kernel version
range constraints for probes to be used so that DTrace can determine at runtime
which probes to enable.  That and code in the trampoline (or in functions it
uses) to do the "right" thing depend on the probe being used is often enough
to deal with variants.



More information about the DTrace-devel mailing list