* compctl crash
@ 2013-04-18 22:01 Nicholas Riley
2013-04-18 23:03 ` Frank Terbeck
2013-04-18 23:59 ` Bart Schaefer
0 siblings, 2 replies; 5+ messages in thread
From: Nicholas Riley @ 2013-04-18 22:01 UTC (permalink / raw)
To: zsh-workers
I misunderstood the documentation for compctl, so I tried this:
compctl +
This crashes zsh back to at least 4.3.9 and up to the current version in
Git. I had thought it would reset all the compctl-defined completions.
glibc logs something of the form:
*** glibc detected *** zsh: double free or corruption (!prev):
0x09b89ca8 ***
--
Nicholas Riley <njriley@illinois.edu>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: compctl crash
2013-04-18 22:01 compctl crash Nicholas Riley
@ 2013-04-18 23:03 ` Frank Terbeck
2013-04-18 23:09 ` Nicholas Riley
2013-04-18 23:59 ` Bart Schaefer
1 sibling, 1 reply; 5+ messages in thread
From: Frank Terbeck @ 2013-04-18 23:03 UTC (permalink / raw)
To: Nicholas Riley; +Cc: zsh-workers
Nicholas Riley wrote:
> I misunderstood the documentation for compctl, so I tried this:
>
> compctl +
>
> This crashes zsh back to at least 4.3.9 and up to the current version in
> Git.
I tried 4.3.10 and a git build that's a few days old, but I could not
reproduce the problem.
> I had thought it would reset all the compctl-defined completions.
Note, that compctl is the older of the two completion systems, that zsh
implements. The newer - compsys - is the one almost everybody uses
(unless they still get that trusty old i386SX-16 another go every once
in a while...).
> glibc logs something of the form:
>
> *** glibc detected *** zsh: double free or corruption (!prev):
> 0x09b89ca8 ***
Do you get a coredump? If so, could you load it into gdb and get a
backtrace?
Regards, Frank
--
In protocol design, perfection has been reached not when there is
nothing left to add, but when there is nothing left to take away.
-- RFC 1925
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: compctl crash
2013-04-18 23:03 ` Frank Terbeck
@ 2013-04-18 23:09 ` Nicholas Riley
0 siblings, 0 replies; 5+ messages in thread
From: Nicholas Riley @ 2013-04-18 23:09 UTC (permalink / raw)
To: zsh-workers
In article <87obdb786z.fsf@ft.bewatermyfriend.org>,
Frank Terbeck <ft@bewatermyfriend.org> wrote:
> I tried 4.3.10 and a git build that's a few days old, but I could not
> reproduce the problem.
Sorry, given I tried it on two different OSes and wildly differing
versions I assumed it would be trivial to reproduce.
> > I had thought it would reset all the compctl-defined completions.
>
> Note, that compctl is the older of the two completion systems, that zsh
> implements. The newer - compsys - is the one almost everybody uses
> (unless they still get that trusty old i386SX-16 another go every once
> in a while...).
Yeah, the only reason I'm even bothering is in my other email - because
virtualenvwrapper uses it.
> > glibc logs something of the form:
> >
> > *** glibc detected *** zsh: double free or corruption (!prev):
> > 0x09b89ca8 ***
>
> Do you get a coredump? If so, could you load it into gdb and get a
> backtrace?
Program received signal SIGABRT, Aborted.
0xf57fe416 in __kernel_vsyscall ()
(gdb) bt
#0 0xf57fe416 in __kernel_vsyscall ()
#1 0xb7e45781 in raise () from /lib/i686/cmov/libc.so.6
#2 0xb7e48bb2 in abort () from /lib/i686/cmov/libc.so.6
#3 0xb7e7be75 in ?? () from /lib/i686/cmov/libc.so.6
#4 0xb7e85f71 in ?? () from /lib/i686/cmov/libc.so.6
#5 0xb7e877c8 in ?? () from /lib/i686/cmov/libc.so.6
#6 0xb7e8a8ad in free () from /lib/i686/cmov/libc.so.6
#7 0x080999a5 in zfree (p=0x8108240, sz=92) at mem.c:1719
#8 0xb7ba7666 in freecompctl (cc=0x8108240) at compctl.c:141
#9 0xb7baad43 in bin_compctl (name=0xb7c166f8 "compctl",
argv=0xbffff294,
ops=0xbffff2d4, func=0) at compctl.c:1591
#10 0x08055b16 in execbuiltin (args=0xb7c166d0, bn=0xb7bb3524) at
builtin.c:450
#11 0x080701c7 in execcmd (state=0xbffff940, input=0, output=0, how=18,
last1=2) at exec.c:3266
#12 0x0806bc74 in execpline2 (state=0xbffff940, pcode=131, how=18,
input=0,
output=0, last1=0) at exec.c:1677
#13 0x0806b0c6 in execpline (state=0xbffff940, slcode=4098, how=18,
last1=0)
at exec.c:1462
#14 0x0806a908 in execlist (state=0xbffff940, dont_change_job=0,
exiting=0)
at exec.c:1245
#15 0x0806a388 in execode (p=0xb7c16648, dont_change_job=0, exiting=0,
context=0x80da3f7 "toplevel") at exec.c:1057
#16 0x08084c8c in loop (toplevel=1, justonce=0) at init.c:185
#17 0x08087d44 in zsh_main (argc=2, argv=0xbffffaa4) at init.c:1617
#18 0x0805512f in main (argc=2, argv=0xbffffaa4) at ./main.c:93
--
Nicholas Riley <njriley@illinois.edu>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: compctl crash
2013-04-18 22:01 compctl crash Nicholas Riley
2013-04-18 23:03 ` Frank Terbeck
@ 2013-04-18 23:59 ` Bart Schaefer
2013-04-20 19:44 ` Nicholas Riley
1 sibling, 1 reply; 5+ messages in thread
From: Bart Schaefer @ 2013-04-18 23:59 UTC (permalink / raw)
To: zsh-workers
On Apr 18, 5:01pm, Nicholas Riley wrote:
}
} I misunderstood the documentation for compctl, so I tried this:
}
} compctl +
}
} This crashes zsh back to at least 4.3.9 and up to the current version in
} Git. I had thought it would reset all the compctl-defined completions.
No, it's just supposed to list all the completions, like "compctl" with
no arguments at all.
There is indeed a double free. There are only two calls to get_compctl()
in the source, and as far as I can tell neither of them really wants to
have it free an object passed in by the caller. The value of "cl" is
always false, too, so there's a lot of dead code here.
diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c
index 0143370..ab1857c 100644
--- a/Src/Zle/compctl.c
+++ b/Src/Zle/compctl.c
@@ -398,7 +398,6 @@ get_compctl(char *name, char ***av, Compctl cc, int first, int isdef, int cl)
if (cl)
return 1;
else {
- freecompctl(cc);
cclist = COMP_REMOVE;
return 0;
}
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: compctl crash
2013-04-18 23:59 ` Bart Schaefer
@ 2013-04-20 19:44 ` Nicholas Riley
0 siblings, 0 replies; 5+ messages in thread
From: Nicholas Riley @ 2013-04-20 19:44 UTC (permalink / raw)
To: zsh-workers
In article <130418165936.ZM8756@torch.brasslantern.com>,
Bart Schaefer <schaefer@brasslantern.com> wrote:
> No, it's just supposed to list all the completions, like "compctl" with
> no arguments at all.
Thanks, that makes sense. (I had no reason to clear everything.)
And now it works, too!
--
Nicholas Riley <njriley@illinois.edu>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-04-20 19:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-18 22:01 compctl crash Nicholas Riley
2013-04-18 23:03 ` Frank Terbeck
2013-04-18 23:09 ` Nicholas Riley
2013-04-18 23:59 ` Bart Schaefer
2013-04-20 19:44 ` Nicholas Riley
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).