Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: zmodload (-u?) changing options (was Re: [PATCH] Named reference typos & misc.)

On Thu, Feb 16, 2023 at 7:53 AM Peter Stephenson
<p.w.stephenson@xxxxxxxxxxxx> wrote:
> Might be something valgrind could help with, it's hard to see how
> this could be deliberate even as an obscure side effect.

I rigged up a script as Src/zsh so that I could invoke valgrind from
the test harness.  Got multiple invalid reads for this block:

==746398==  Block was alloc'd at
==746398==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgprel
==746398==    by 0x190208: zalloc (mem.c:966)
==746398==    by 0x1903B9: zshcalloc (mem.c:979)
==746398==    by 0x19B2CD: createparam (params.c:1061)
==746398==    by 0x1A1048: assignsparam (params.c:3130)
==746398==    by 0x1A1D02: setsparam (params.c:3240)
==746398==    by 0x19270F: add_autoparam (module.c:1215)
==746398==    by 0x19862A: autofeatures (module.c:3612)
==746398==    by 0x19686F: unload_module (module.c:2902)
==746398==    by 0x196A04: unload_named_module (module.c:2949)
==746398==    by 0x196ABD: bin_zmodload_load (module.c:2971)
==746398==    by 0x1957AD: bin_zmodload (module.c:2499)

module.c:2902 would be:

   2898         /*
   2899          * Module has autoloadable features.  Restore them
   2900          * so that the module will be reloaded when needed.
   2901          */
   2902         autofeatures("zsh", m->node.nam,
   2903                      hlinklist2array(m->autoloads, 0), 0, FEAT_IGNORE);

==746398==  Address 0x643b030 is 16 bytes inside a block of size 80 free'd
==746398==    at 0x483CA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreloa
==746398==    by 0x1907C9: zfree (mem.c:1871)
==746398==    by 0x1A80C3: freeparamnode (params.c:5818)
==746398==    by 0x1A4681: unsetparam_pm (params.c:3779)
==746398==    by 0x19206F: checkaddparam (module.c:1052)
==746398==    by 0x19209A: addparamdef (module.c:1065)
==746398==    by 0x192463: setparamdefs (module.c:1174)
==746398==    by 0x197E48: setfeatureenables (module.c:3367)
==746398==    by 0x197EC3: handlefeatures (module.c:3385)
==746398==    by 0x1F7CC5: enables_zshQsparameter (parameter.c:2333)
==746398==    by 0x193164: enables_module (module.c:1948)
==746398==    by 0x1936C6: do_module_features (module.c:2109)

So, what's going on here?  I tried checking the "incleanup" static
inside Src/Modules/parameter.c enables_(), but it's not set [before
entering enables_()] during that call stack.

Messages sorted by: Reverse Date, Date, Thread, Author