[DTrace-devel] [PATCH v2 2/2] tests, actions: fix tst.symmod.sh

Kris Van Hees kris.van.hees at oracle.com
Fri Jul 26 22:59:14 UTC 2024


I am renewing my question from Feb 20...  It seems that a v3 of this patch is
needed to address issues as discussed in the exchange below.  For now, I am
deferring this patch pending such a v3.

On Tue, Feb 20, 2024 at 02:31:42PM -0500, Eugene Loh via DTrace-devel wrote:
> One question is what need there is for this test.  I think the "need" was to
> wean the test suite off of /proc/kallmodsyms.  It's unclear to me what
> urgency we feel on that.
> 
> Generalizing to any symbol opens up various cans of worms.  E.g., DTrace
> won't handle every kall[mod]syms symbol, and the test needs to be tweaked to
> strip [] off mod names.
> 
> Maybe for now, there is a simple solution.  I think the test name and
> location make it clear that it's doing a sanity ("unit") test on the sym()
> and mod() actions.  Nick points out that mod() is not robustly tested if we
> only pick one symbol that we know is in vmlinux.  But still, maybe a "good
> enough" solution for now is something like:
> 
> - # pick a test symbol from /proc/kallmodsyms
> + # pick a test symbol from /proc/kallsyms
> - read ADD NAM MOD <<< `awk '/ksys_write/ {print $1, $4, $5}'
> /proc/kallmodsyms`
> + read ADD NAM <<< `awk '/ksys_write/ {print $1, $3}' /proc/kallsyms`
> - # a blank module means the module is vmlinux
> + # the module is vmlinux
>  - if [ x$MOD == x ]; then
> -     MOD=vmlinux
> - fi
> + MOD=vmlinux
> 
> On 2/20/24 11:43, Kris Van Hees via DTrace-devel wrote:
> > We still need a v3 posted, I think?
> > 
> > On Tue, Feb 13, 2024 at 04:02:25PM +0000, Nick Alcock wrote:
> > > On 13 Feb 2024, Eugene Loh via DTrace-devel told this:
> > > 
> > > > The comment about never using shuf does not belong in the commit message.
> > > > 
> > > > The indentation in the file is with tabs, so that style should be preserved.
> > > ... it was? Whoops :)
> > > 
> > > > Instead of inflooping (in flooping?), how about "infinitely looping".? (I do find some occurrences of "inflooping" on the internet,
> > > > but might as well be less slangy?)
> > > I find 'infinitely looping' clunky. "Looping infinitely" is even
> > > clunkier. Inflooping is an established term of art, frankly.
> > > (Irrelevant given the below anyway.)
> > > 
> > > > Anyhow, instead of the shuffle approach, how about "awk 'NF == 4' /proc/kallsyms" to a temp file and use that?
> > > Oh yeah that would work, though I don't see what's wrong with using
> > > shuf...
> > > 
> > > > But even that won't be enough.? Once you allow "any" symbol from
> > > > /proc/kallsyms, you risk encountering symbols that DTrace doesn't know
> > > > about.? Stuff like __ksymtab* and __kstrtab* and others.? I think we
> > > > filter that stuff out in dt_modsym_addsym().? The same filtering is
> > > > done in test/unittest/consumer/tst.symbols.c.? It's the headache one
> > > > saves by going after a specific symbol like ksys_write.
> > > ... but doing *that* seems like it would render the test nearly useless.
> > > 
> > > the fact that tst.symmod.sh as I found it was broken for *all modules*
> > > even though much of its code was meant to handle them suggests that
> > > whatever it was intended to test, it wasn't actually testing it. (There
> > > are no comments describing what it's for, which makes it hard to figure
> > > out how to preserve that property when changing it.)
> > > 
> > > (I mean among other things it was carefully selecting a guaranteed
> > > non-modular symbol, so what all this code to figure out what module it
> > > was in was for, even if it had worked, I have no idea...)
> > > 
> > _______________________________________________
> > DTrace-devel mailing list
> > DTrace-devel at oss.oracle.com
> > https://oss.oracle.com/mailman/listinfo/dtrace-devel
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list