From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2278 invoked by alias); 3 Oct 2016 16:16:07 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 39549 Received: (qmail 17608 invoked from network); 3 Oct 2016 16:16:07 -0000 X-Qmail-Scanner-Diagnostics: from mail-pf0-f172.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.192.172):SA:0(0.0/5.0):. Processed in 0.159073 secs); 03 Oct 2016 16:16:07 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: schaefer@brasslantern.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at brasslantern.com does not designate permitted sender hosts) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:date:in-reply-to:comments:references:to:subject :mime-version; bh=N8BuErEq5U88qnLpG/M0Hd8UZWGO3F2z8wzr7HXVVwk=; b=kWoF97I4poP9a8HdICF+b6+zF6XxUXdxgKAOH8DikY6ibiMtPZp2qbs1s1fQiSpLOZ JLgPP5bINLzK8d0AU4hrb5FumuiFupN0Mx/JZ4FPcaLJshrnchx57Di10qzgx3QXgMpQ 87tIesB+M6e7ZSaPTjtHIg0fq3RNh0+Ws6M4Cbhx7PZD1oCL3a5yzlAGKFySb2oB6sTw HAjpp/3MZB9+u+affqRH8+jgr+3oAnmp3f8oLacmP7g8AdJyJxv6+ZslbUPi2XA/vrgV xM7iNc93lqP07ZJzhmYLYNdOM2Lj/d8QkLMNzreZhjQPqV1TZxcJRi2CBVCPBEjusx89 fqxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:message-id:date:in-reply-to:comments :references:to:subject:mime-version; bh=N8BuErEq5U88qnLpG/M0Hd8UZWGO3F2z8wzr7HXVVwk=; b=Ste2tQrW/MOiIz3Canc0/IYv222dnVejpN08YjpLrcAoblC2TDpxK/DpMWxxHU0QlP lzkoKCtHaU1bOycpiTd5O3fjOJn3oOhmBH3uIpOtuD6xus5p/au+fa8A6hccLR2UsizQ p0aywQa4NYrvPSCsdk3ttH8p1ToezC3d6ZDIGvSic8w5cGp5aVXi9LtkNZbmNnT0GKcx Qm2CoRKo3xUS4/udA10JZa5tuJ0cEc9j+sZ8KdGTPEm8wlWci3dq59qyNm9RRc1IW2Wb zwKYoTMDkqOP+j9FoMxGdOjLkc2Z7uj0cRVwLOUJXMP8qD0Xoys+XNAwABVLkzDQnjZd U0NQ== X-Gm-Message-State: AA6/9RljKXHNWqUOVRzd1bF4tgYQ8SXYq2MCO9XynuxBqjkXi7xHg5HO6N5IeGTPy6aFWw== X-Received: by 10.98.156.193 with SMTP id u62mr38637782pfk.57.1475508005325; Mon, 03 Oct 2016 08:20:05 -0700 (PDT) From: Bart Schaefer Message-Id: <161003082029.ZM7267@torch.brasslantern.com> Date: Mon, 3 Oct 2016 08:20:29 -0700 In-Reply-To: <20161003111840.3e5081f0@pwslap01u.europe.root.pri> Comments: In reply to Peter Stephenson "Re: [BUG] queueing_enabled grows infinitely when in .recursive-edit" (Oct 3, 11:18am) References: <161002162145.ZM22574@torch.brasslantern.com> <20161003111840.3e5081f0@pwslap01u.europe.root.pri> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: Zsh hackers list Subject: Re: [BUG] queueing_enabled grows infinitely when in .recursive-edit MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Oct 3, 11:18am, Peter Stephenson wrote: } } Here are some missing unqueue_signals() (this was quite boring, by the } way, just in case you were thinking "wow, wish I'd done that"). Actually I was thinking "Thank you, I expected to need to do that." } Most of these look minor but the one in execpline() looks like it could } be hairy because most things in execpline() are hairy. Fixing all of these is valuable/necessary, of course; but or purposes of this specific bug report we can discount any that had an error message nearby, because no such errors were displayed. It also doesn't have anything to do with history, sourcing files, or prompts, and I wasn't using heap validation. That narrows it down to these: } diff --git a/Src/exec.c b/Src/exec.c } index a429428..9890286 100644 } --- a/Src/exec.c } +++ b/Src/exec.c } @@ -1795,6 +1795,8 @@ execpline(Estate state, wordcode slcode, int how, int last1) } deletejob(jn, 0); } thisjob = pj; } } } + else } + unqueue_signals(); } if ((slflags & WC_SUBLIST_NOT) && !errflag) } lastval = !lastval; } } } @@ -5556,6 +5558,7 @@ runshfunc(Eprog prog, FuncWrap wrap, char *name) } if (!cont) { } if (ou) } zfree(ou, ouu); } + unqueue_signals(); } return; } } } wrap = wrap->next; It's quite possible that both of these were in play, because the restore_queue_signals() debugging that I tried reported queueing_enabled to be 2 when it was expected to be 0 even in cases where it did not then continue growing. I will clean up that additional debugging for signals.h to make it suitable for commit, so that we have a better chance of catching these problems in new code.