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

Re: TRAPINT doesn't work reliably

On Wednesday, September 25, 2019 7:56 PM, Peter Stephenson <p.stephenson@xxxxxxxxxxx> wrote:

> On Wed, 2019-09-25 at 16:25 +0000, Dennis Schwartz wrote:
> > ==1896==  Block was alloc'd at
> > ==1896==    at 0x483877F: malloc (vg_replace_malloc.c:299)
> > ==1896==    by 0x136A13: zcontext_save_partial (in /usr/bin/zsh)
> > ==1896==    by 0x165622: parse_subscript (in /usr/bin/zsh)
> > ==1896==    by 0x17A446: getindex (in /usr/bin/zsh)
> > ==1896==    by 0x17ABCF: fetchvalue (in /usr/bin/zsh)
> > ==1896==    by 0x19BDB0: ??? (in /usr/bin/zsh)
> > ==1896==    by 0x1A0C87: prefork (in /usr/bin/zsh)
> > ==1896==    by 0x13ABE6: execsubst (in /usr/bin/zsh)
> > ==1896==    by 0x1674CB: execfor (in /usr/bin/zsh)
> > ==1896==    by 0x13E44C: ??? (in /usr/bin/zsh)
> > ==1896==    by 0x13FB6E: ??? (in /usr/bin/zsh)
> > ==1896==    by 0x13FF11: ??? (in /usr/bin/zsh)
> > ==1896==
> > ==1896== Invalid read of size 1
> One kind of interesting thing here is there's some suggestion that the
> original allocation was not simply in top level code, but in some kind
> of block (at least a for block) --- assuming, of course, this is
> relevant.  Is there some structure about the point where you're setting
> up the trap?  If so, does changing it (making it simpler) have any
> effect on the problem?

Okay, after quite some time debugging (I will spare you the details of
all what I've tried), I can now reliably reproduce the bug. However, I
lack the knowledge of zsh to understand what is causing the bug.

To trigger the bug, I just open a fresh new shell (e.g. run `zsh`) and
type `ls` and hit TAB to trigger the autocompletion function.

However, I can only reproduce the bug if I have the following code in my

    # Antigen zsh plugins
    if [ -f "/usr/share/zsh-antigen/antigen.zsh" ]; then
        source "/usr/share/zsh-antigen/antigen.zsh"

        # load some plugins here, but they are not relevant to trigger
        # the bug

So, I conditionally `source` another file. Apparently, this is causing
*super weird* behavior. Unbelievably, if I open the file `.zshrc` (e.g.,
vim/gedit) and _save_ the file, I cannot trigger the bug. However, if I
open the file, but _do not save_ the file, I always trigger the bug.

To complicate it further, I can trigger the bug when I compile from
source `zsh-5.7.1`, but I cannot trigger the bug anymore if VERSION in
`Config/version.mk` is updated (i.e., the next commit).

These findings leave me totally confused. Not sure if it's relevant but
I mount my home folder with the `noatime` option.

Any ideas? Thanks for your help!


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