From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3511 invoked from network); 30 Nov 1999 16:04:08 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 30 Nov 1999 16:04:08 -0000 Received: (qmail 28060 invoked by alias); 30 Nov 1999 16:04:00 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 8825 Received: (qmail 28049 invoked from network); 30 Nov 1999 16:03:58 -0000 From: "Bart Schaefer" Message-Id: <991130160351.ZM5185@candle.brasslantern.com> Date: Tue, 30 Nov 1999 16:03:51 +0000 In-Reply-To: Comments: In reply to James Kirkpatrick "Re: zsh 3.0.7 hogs memory" (Nov 30, 8:42am) References: X-Mailer: Z-Mail (5.0.0 30July97) To: James Kirkpatrick Subject: Re: zsh 3.0.7 hogs memory Cc: zsh-workers@sunsite.auc.dk, Susan L Hanna MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Nov 30, 8:42am, James Kirkpatrick wrote: } Subject: Re: zsh 3.0.7 hogs memory } } I tried the TRAPHUP and that does indeed seem to solve the problem. } However, it seems more of an experiment than a true fix. Yes. } Does this give you enough to work towards a proper fix, or should I do } more to characterize the problem (e.g. try one of the other two } suggestions)? Please try applying the patch and recompiling. (And then be sure to remove the TRAPHUP before you test it.) The TRAPHUP experiment confirms that it's a signal-handling issue rather than simply EOF-on-stdin, but it doesn't entirely confirm my hypothesis about the SIGHUP loop. Another thing that I just thought of: It might be an interaction between SIGHUP and SIGCHLD handlers; possibly saving of the histfile delays zsh's exit just enough for the signal from the exiting Pine to arrive, or to arrive in a different part of the shutdown. (Anybody else have a guess?) } > Index: Src/signals.c } > =================================================================== } > @@ -540,7 +540,8 @@ } > if ((from_signal || i != thisjob) && (jobtab[i].stat & STAT_LOCKED) && } > !(jobtab[i].stat & STAT_NOPRINT) && } > !(jobtab[i].stat & STAT_STOPPED)) { } > - if (killpg(jobtab[i].gleader, SIGHUP) != -1) } > + if (jobtab[i].gleader != getpid() && } > + killpg(jobtab[i].gleader, SIGHUP) != -1) } > killed++; } > } } > if (killed) } > } > I'll be a bit concerned about other signal-handling issues if that really } > does fix it, though. -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com