Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: zsh 5.1 freezes with zombie child
- X-seq: zsh-workers 36394
- From: Mathias Fredriksson <mafredri@xxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: Re: zsh 5.1 freezes with zombie child
- Date: Wed, 2 Sep 2015 09:00:12 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=g0YZ2LMIMXOePel0Lr3X4bi7/Ml0xCQwGWk1CJpKPAA=; b=NVJQs20SBxG/Fd7zqbavxmzGxtTT9xpv0KVsbozru31Wjuv6guBVvN02FUsIJccE2C 1i1NhnpoivICsbNBRoPgQ3YNk3k9o3WbP9xxkhkBIAL6yX4Cn+L0OG2L5nux6SZxId4s s4w5Je1/EBcwlnp1e0MCFFeoV2BbVvw6UXGASTjEBJ5bjWwxOBeUbfdXCI2scBgsl2lC 4tobrSFW37cqVEcVWEJs5I5rNRGlH+HH/Z7GWcZczuGhLXRSwElgfTydxyA1FbnpMsgk +LlGJOUm2Nk4G5sDK/gPqLuJF4i1mGNTN2dJ3zYQ7PO486AMDfO4Q/FENt54eIKi/8hp C7XA==
- In-reply-to: <150901191441.ZM15728@torch.brasslantern.com>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <20150901230743.GA12128@zira.vinc17.org> <20150902001322.GA17603@zira.vinc17.org> <150901191441.ZM15728@torch.brasslantern.com>
I'm currently away, but I'll give it a try when I get back at the end of
the week.
On Sep 2, 2015 5:15 AM, "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxx> wrote:
> On Sep 2, 2:13am, Vincent Lefevre wrote:
> }
> } zira% updprompt() { true && { : } }
> } zira% TRAPCHLD() { updprompt }
> } zira% sleep 2 & sleep 3 ; echo OK
> } [1] 20452
> } [1] + done sleep 2
> }
> } and zsh freezes here.
>
> The following fixes it, but makes me nervous. Is Mathias Fredriksson
> still listening? Try to reproduce that deadlock from the thread back
> at the beginning of August? (Was it really that recently? Gaah.)
>
>
> diff --git a/Src/signals.c b/Src/signals.c
> index f45c186..aa0b5aa 100644
> --- a/Src/signals.c
> +++ b/Src/signals.c
> @@ -1348,6 +1348,7 @@ void
> dotrap(int sig)
> {
> void *funcprog;
> + int q = queue_signal_level();
>
> if (sigtrapped[sig] & ZSIG_FUNC) {
> HashNode hn = gettrapnode(sig, 0);
> @@ -1370,5 +1371,9 @@ dotrap(int sig)
> if ((sigtrapped[sig] & ZSIG_IGNORED) || !funcprog || errflag)
> return;
>
> + dont_queue_signals();
> +
> dotrapargs(sig, sigtrapped+sig, funcprog);
> +
> + restore_queue_signals(q);
> }
>
Messages sorted by:
Reverse Date,
Date,
Thread,
Author