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

SEGV with alias\



[CCing reporter of the recent ihungetc() issue]

Typing <l><s><Backslash><Enter><Enter> may segfault if 'ls' is aliased.

The segfault is:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6fe31d5 in _int_malloc (av=0x7ffff72f1e40, bytes=2) at malloc.c:4308
4308	malloc.c: No such file or directory.
(gdb) bt
#0  0x00007ffff6fe31d5 in _int_malloc (av=0x7ffff72f1e40, bytes=2) at malloc.c:4308
#1  0x00007ffff6fe5a70 in *__GI___libc_malloc (bytes=2) at malloc.c:3660
#2  0x00000000004694f3 in zshcalloc (size=2) at mem.c:918
#3  0x000000000045464b in inungetc (c=10) at input.c:442
#4  0x0000000000449a53 in ihungetc (c=10) at hist.c:926
#5  0x000000000044993b in ihungetc (c=92) at hist.c:908
#6  0x0000000000449949 in ihungetc (c=92) at hist.c:908
#7  0x0000000000449949 in ihungetc (c=92) at hist.c:908
#8  0x0000000000449949 in ihungetc (c=92) at hist.c:908
#9  0x0000000000449949 in ihungetc (c=92) at hist.c:908
#10 0x0000000000449949 in ihungetc (c=92) at hist.c:908

Another behaviour is this:

    ### Short expansion: two warnings
    $ zsh -f
    % alias ls=:
    % ls\
    > 
    Warning: backing up wrong character.
    Warning: backing up wrong character.

    ### Long expansion: infinite loop
    % alias ls=:\ zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    % ls\
    > 
    Warning: backing up wrong character.
    Warning: backing up wrong character.
    Warning: backing up wrong character.
    ...
    ^C
    Warning: backing up wrong c%
    haracter.

    ### The '%' in the next-to-last line is in reverse video.

I'm not completely sure what's the distinction — my 'print
$ZSH_PATCHLEVEL' statements were acting up (!), reporting sometimes
a commit before the ihungetc fix and sometimes after it.  So I'm
guessing the segfault is pre-35854 and the warning after it.

Reported by 'thm' on IRC.

Cheers,

Daniel



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