From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5804 invoked from network); 25 Jun 1999 06:23:11 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 25 Jun 1999 06:23:11 -0000 Received: (qmail 24924 invoked by alias); 25 Jun 1999 06:22:56 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6838 Received: (qmail 24915 invoked from network); 25 Jun 1999 06:22:55 -0000 Date: Fri, 25 Jun 1999 08:22:54 +0200 (MET DST) Message-Id: <199906250622.IAA32689@beta.informatik.hu-berlin.de> From: Sven Wischnowsky To: zsh-workers@sunsite.auc.dk In-reply-to: Jos Backus's message of Thu, 24 Jun 1999 17:26:48 +0200 Subject: Re: 3.0.6-pre-5 problem Jos Backus wrote: > More info: I just rebuilt zsh with --enable-zsh-debug. Now, when I start an > xterm, start mutt (using the function) and press ^Z, both mutt and the xterm > disappear, leaving a zsh.core file behind. See stacktrace. > > Interestingly, this backtrace looks quite different from the first one. (This fact irritates me mightily.) Anyway, I couldn't reproduce it but there is no harm in adding some security code to execpline(). I guess this will not apply cleanly to 3.0.6, though. And, of course, I have 6819 applied (which fixed a problem with suspending shell functions, although that problem didn't cause a SEGV). Bye Sven diff -u os/exec.c Src/exec.c --- os/exec.c Thu Jun 24 14:03:58 1999 +++ Src/exec.c Fri Jun 25 08:10:28 1999 @@ -904,15 +904,16 @@ if (!jn->procs->next) jn->gleader = mypgrp; - for (pn = jobtab[jn->other].procs; pn; pn = pn->next) - if (WIFSTOPPED(pn->status)) - break; + if (jn->stat & STAT_SUPERJOB) { + for (pn = jobtab[jn->other].procs; pn; pn = pn->next) + if (WIFSTOPPED(pn->status)) + break; - if (pn) { - for (qn = jn->procs; qn->next; qn = qn->next); - qn->status = pn->status; + if (pn) { + for (qn = jn->procs; qn->next; qn = qn->next); + qn->status = pn->status; + } } - jn->stat &= ~(STAT_DONE | STAT_NOPRINT); jn->stat |= STAT_STOPPED | STAT_CHANGED; printjob(jn, !!isset(LONGLISTJOBS), 1); -- Sven Wischnowsky wischnow@informatik.hu-berlin.de