Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Reliable zsh-3.0.0 core dump
- X-seq: zsh-workers 2070
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
- To: Zoltan Hidvegi <hzoli@xxxxxxxxxx>
- Subject: Re: Reliable zsh-3.0.0 core dump
- Date: Sun, 25 Aug 1996 12:10:28 -0700
- Cc: zsh-workers@xxxxxxxxxxxxxxx
- In-reply-to: Zoltan Hidvegi <hzoli@xxxxxxxxxx> "Re: Reliable zsh-3.0.0 core dump" (Aug 25, 1:16pm)
- References: <199608251116.NAA00518@xxxxxxxxxxxxxxxxxxxx>
- Reply-to: schaefer@xxxxxxx
On Aug 25, 1:16pm, Zoltan Hidvegi wrote:
} Subject: Re: Reliable zsh-3.0.0 core dump
}
} > Install the following function and alias; then execute run-help (via ZLE
} > with ESC h) more than once. It works the first time, and dumps core in
} > parsecomp() the second time (with a trashed stack).
} >
} > zman() {
} > if [[ -f /usr/local/lib/zsh/functions/run-help ]]
} > then
} > autoload run-help
} > FPATH=/usr/local/lib/zsh/functions \run-help $1
} > elif [[ -f /usr/local/lib/zsh/help/$1 ]]
} > then less /usr/local/lib/zsh/help/$1
} > else man $1
} > fi
} > }
} > alias run-help zman
} ^ here you just missed an `=', didn't you?
}
} I cannot get a core-dump this way.
I can't get a core dump either if I use --enable-zsh-mem ... only with
the system malloc. I hadn't tried zsh-mem before.
I also get the core dump if and only if I have done:
zigzag% run-help<ESC h>
That is, if I ask for help on run-help itself. Furthermore, I get the
crash if and only if there is NO SPACE between the `p' and the cursor
when I hit <ESC h>.
Additional information: The first time I do this, I get the help *twice*
(that is, it says "Press any key for more help or q to quit" and then
when I press q it shows me the same help again). The second time I do
it is when I get the core dump, and that second time it doesn't matter
what the word in command position is.
I get the help twice that way even with --enable-zsh-mem; only the crash
is prevented. --enable-zsh-mem-debug and --enable-zsh-mem-warning don't
produce any warnings at all.
If I run inside GDB, I get this much of a stack trace:
(gdb) where
#0 0x40030f12 in _free_internal ()
#1 0x400a0238 in __DTOR_END__ ()
#2 0x400d23f4 in _fraghead ()
#3 0x806e280 in expl ()
Cannot access memory at address 0x65685498.
This happens even in zsh -f with no HELPDIR defined.
If I run outside GDB and then examine the core file, I get parsecomp() in
frame #0 and the rest of the stack is trashed (but that wasn't with zsh -f,
now that I think about it).
} I use a modified run-help:
}
} -elif [[ -n "${HELPDIR:-}" && -r $HELPDIR/$1 ]]
} +elif [[ -n "${HELPDIR:-}" && -r $HELPDIR/$1 && $1 != compctl ]]
Heh. That was one of the reasons I rewrote run-help in the first place.
BTW, here's a probably-related oddity (vanilla 3.0.0 zsh -f withOUT the
function above):
zagzig% set -vx
zagzig% run-help<ESC h> <-- cursor imediately after the `p'
zagzig% run-help run-help
run-help run-help
+ man run-help
No manual entry for run-help
zagzig% run-help <ESC h> <-- space between `p' and cursor
zagzig% run-help man
run-help man
+ man man
In the second case, the built-in alias of run-help to man expanded before
help was invoked; in the first case it did not. I think it should be
consistent (and I think the first case is how it should work, i.e. don't
expand the alias, but that's less important).
Or is this intentional and simply not documented?
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.nbn.com/people/lantern
New male in /home/schaefer:
>N 2 Justin William Schaefer Sat May 11 03:43 53/4040 "Happy Birthday"
Messages sorted by:
Reverse Date,
Date,
Thread,
Author