[Pkg-zsh-devel] Bug#663982: Bug#663982: Bug#663982: zsh: autocompletion does not work anymore after compinit

Martin Steigerwald ms at teamix.de
Mon Mar 26 08:36:02 UTC 2012


Am Donnerstag, 22. März 2012 schrieb Michael Prokop:
> * Axel Beckert [Thu Mar 22, 2012 at 11:27:54AM +0100]:
> > Frank Terbeck wrote:
> > > Martin Steigerwald wrote:
> [...]
> 
> > > > mango% compinit
> > > > mango% cd In
> > > > No reaction on tab anymore.
> 
> [...]
> 
> > I ran into this too, after I bumped my zshrc to the newest grml zshrc
> > on Debian Stable with NFS home and about 5000 users in NIS. So I'm not
> > sure if it has the same reason, but it definitely has the same
> > symptoms.
> > 
> > I'd say 5 to 10 minutes or so. Ctrl-C doesn't help. Just waiting. The
> > zsh process is in the "uninterruptable sleep" state (aka "D" aka "disk
> > waiting").
> > 
> > It doesn't seem to happen with all kinds of completion but at least
> > with scp completion.
> 
> Might be worth trying a debug session as documented in
> http://anonscm.debian.org/gitweb/?p=collab-maint/zsh.git;a=blob;f=debian/RE
> ADME.Debian

Here is what I get when I just "next" through it. Thats just what happens when 
I press tab in a shell with compinit loaded where tab completion does not 
work:

ms at mango:~/lokal/Debian/zsh-debugging#1> gdb $(find . -type d -printf '-d %p ') 
attach 8463
GNU gdb (GDB) 7.4-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
attach: Datei oder Verzeichnis nicht gefunden.
Attaching to process 8463
Reading symbols from /bin/zsh4...Reading symbols from 
/usr/lib/debug/bin/zsh4.dbg...done.
done.
Reading symbols from /lib/libcap.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/libcap.so.2
Reading symbols from /lib/i386-linux-gnu/i686/cmov/libdl.so.2...Reading 
symbols from /usr/lib/debug/lib/i386-linux-gnu/i686/cmov/libdl-2.13.so...done.
done.
[…]
Reading symbols from /usr/lib/zsh/4.3.17/zsh/terminfo.so...Reading symbols 
from /usr/lib/debug/usr/lib/zsh/4.3.17/zsh/terminfo.so.debug...done.
done.
Loaded symbols for /usr/lib/zsh/4.3.17/zsh/terminfo.so
[…]
(gdb) step
Single stepping until exit from function __kernel_vsyscall,
which has no line number information.
getbyte (do_keytmout=0, timeout=0x0) at ../../../Src/Zle/zle_main.c:845
845                 restore_queue_signals(q);
(gdb) next
846                 if (r == -2) {
(gdb) next
845                 restore_queue_signals(q);
(gdb) next
846                 if (r == -2) {
(gdb) next
852                 if (r == 1)
(gdb) next
894             if (cc == '\r')         /* undo the exchange of \n and \r 
determined by */
(gdb) next
896             else if (cc == '\n')
(gdb) next
905         if (vichgflag) {
(gdb) next
910         errno = old_errno;
(gdb) next
911         return lastchar = ret;
(gdb) next
912     }
(gdb) next
getkeybuf (w=0) at ../../../Src/Zle/zle_keymap.c:1486
1486        if(c < 0)
(gdb) next
1484        int c = getbyte((long)w, NULL);
(gdb) next
1486        if(c < 0)
(gdb) next
1488        if(keybuflen + 3 > keybufsz)
(gdb) next
1490        if(imeta(c)) {
(gdb) next
1494            keybuf[keybuflen++] = c;
(gdb) next
1495        keybuf[keybuflen] = 0;
(gdb) next
getkeymapcmd (km=0x8ce18d8, funcp=0xbfb149f4, strp=0xbfb149f8) at 
../../../Src/Zle/zle_keymap.c:1431
1431            int loc = !!localkeymap;
(gdb) next
1428        while(getkeybuf(!!lastlen) != EOF) {
(gdb) next
1431            int loc = !!localkeymap;
(gdb) next
1434            if (loc) {
(gdb) next
1432            int ispfx = 0;
(gdb) next
1439                f = keybind(km, keybuf, &s);
(gdb) next
1440            ispfx |= keyisprefix(km, keybuf);
(gdb) next
1439                f = keybind(km, keybuf, &s);
(gdb) next
1440            ispfx |= keyisprefix(km, keybuf);
(gdb) next
1442            if (f != t_undefinedkey) {
(gdb) next
1443                lastlen = keybuflen;
(gdb) next
1445                str = s;
(gdb) next
1446                lastc = lastchar;
(gdb) next
1443                lastlen = keybuflen;
(gdb) next
1446                lastc = lastchar;
(gdb) next
1445                str = s;
(gdb) next
1446                lastc = lastchar;
(gdb) next
1448            if (!ispfx)
(gdb) next
1451        if(!lastlen && keybuflen)
(gdb) next
1454            lastchar = lastc;
(gdb) next
1455        if(lastlen != keybuflen) {
(gdb) next
1454            lastchar = lastc;
(gdb) next
1455        if(lastlen != keybuflen) {
(gdb) next
1462        *funcp = func;
(gdb) next
1463        *strp = str;
(gdb) next
1462        *funcp = func;
(gdb) next
1463        *strp = str;
(gdb) next
1464        return keybuf;
(gdb) next
1465    }
(gdb) next
getkeycmd () at ../../../Src/Zle/zle_keymap.c:1521
1521        if(!*seq)
(gdb) next
1523        if(!func) {
(gdb) next
1537        if (func == Th(z_executenamedcmd) && !statusline) {
(gdb) next
1547        if (func == Th(z_executelastnamedcmd))
(gdb) next
1550    }
(gdb) next
zlecore () at ../../../Src/Zle/zle_main.c:1040
1040            if (bindk) {
(gdb) next
1039            bindk = getkeycmd();
(gdb) next
1040            if (bindk) {
(gdb) next
1041                if (!zlell && isfirstln && !(zlereadflags & ZLRF_IGNOREEOF) 
&&
(gdb) next
1053                if (execzlefunc(bindk, zlenoargs, 0)) {
(gdb) next
1054                    handlefeep(zlenoargs);
(gdb) next
1055                    if (eofsent)
(gdb) next
1058                handleprefixes();
(gdb) next
1060                if (invicmdmode() && zlecs > findbol() &&
(gdb) next
1063                if (undoing)
(gdb) next
1064                    handleundo();
(gdb) next
1070            if (baud && !(lastcmd & ZLE_MENUCMP)) {
(gdb) next
1094                if (!kungetct)
(gdb) next
1095                    zrefresh();
(gdb) next
1097            freeheap();
(gdb) next
1032        while (!done && !errflag && !exit_pending) {
(gdb) next
1035            statusline = NULL;
(gdb) next
1036            vilinerange = 0;
(gdb) next
1035            statusline = NULL;
(gdb) next
1036            vilinerange = 0;
(gdb) next
1037            reselectkeymap();
(gdb) next
1038            selectlocalmap(NULL);
(gdb) next
1039            bindk = getkeycmd();
(gdb) next
^[[A
^[[A

Ciao,
-- 
Martin Steigerwald - teamix GmbH - http://www.teamix.de
gpg: 19E3 8D42 896F D004 08AC A0CA 1E10 C593 0399 AE90





More information about the Pkg-zsh-devel mailing list