On Mon, Oct 30, 2000 at 09:32:00AM +0100, Sven Wischnowsky wrote: > Thomas Koehler wrote: > > > Hi there, > > I have the following problem with zsh-3.1.9-dev-6 on Debian GNU/Linux > > for i386: > > Sometimes, while trying to complete, zsh crashes and dumps core. In > > fact, the problem has been there for quite a while now, perhaps it has > > been there since the new completions system has been introduced - I > > don't know. The problem is: I can't reproduce the bug. It just happens > > to occur every once in a while. > > Well, this is not the only problem: Sometimes, zsh forgets its > > completion settings. I use this line in my .zshrc: > > zstyle ':completion:*' completer _complete _ignored _match _correct _approx= > > imate _prefix > > Now, sometimes, for some strange reason, zsh forgets to complete on tab > > and starts to _correct things right away: For example, I had a directory > > "abcdef" and a directory "abx" and typed "cd abc" which resulted in > > "cd abx". > > Thomas sent me his .zshrc, I tried, but couldn't reproduce it. But I > think I know where it comes from and why I never could reproduce it > (he reported it already quite some time ago, I think; or something > similar?). Yes, I reported this a while ago. > Thomas uses a trap handler for the ALRM signal and with TMOUT=1 to > update his prompt. The trap handler uses several local parameters. > Since zsh invokes (shell-code) trap handler asynchronously from the > signal handler, this could easily mess up the parameter table if the > signal comes at a time when the completion code is playing with the > parameter table itself. Ugh. Would it help if I'd change my signal handler not to use local parameters? > We talked about this several times already. We either need to protect > parts of the code (blocking signals there) or we should make the > signal handlers do as little as possible, setting only some flags or > something like that and call the trap handler shell-code somewhere > else where it can be called savely. We `decided' to use the second > solution, I think (and the first one is expensive and we have to find > all the right places and...). > > We could also use a mixture: a global flag that tells the signal code > that it's save to invoke the trap handler right away but normally it > would only make them be called later. That flag could be set when zsh > is waiting for an external command, reading somethin or whatever. > (This could be a good reason to finally write a function that is > called everywhere zsh waits for something. And then we could allow > modules to hook into it or something.) Sounds like a nice idea. > Bye > Sven CU, Thomas -- Thomas Köhler Email: jean-luc@picard.franken.de | LCARS - Linux <>< WWW: http://jeanluc-picard.de | for Computers IRC: jeanluc | on All Real PGP public key available from Homepage! | Starships