Path: csiph.com!xmission!news.glorb.com!usenet.stanford.edu!not-for-mail From: konsolebox Newsgroups: gnu.bash.bug Subject: Re: Script shell suspends after executing second child process Date: Sun, 15 Nov 2015 14:25:03 +0800 Lines: 44 Approved: bug-bash@gnu.org Message-ID: References: <5644F35F.2050507@case.edu> <5647BD8A.8060305@case.edu> <5647EF3B.20002@case.edu> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: usenet.stanford.edu 1447656383 4854 208.118.235.17 (16 Nov 2015 06:46:23 GMT) X-Complaints-To: action@cs.stanford.edu Cc: bug-bash To: Chester Ramey Envelope-to: bug-bash@gnu.org 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 :cc:content-type; bh=QmOdwudCJT4SnC3uLntVUhzNZNRDZWxbPDIjPnuvWZI=; b=DBMK3umjgjGknjZJdwD7F2/I4MmIa+pIjECCmgjsRkXKAvF9cGcbxXXzR26mAxET/e g1YQuA2RT17P+0HUpJ+xkq0LQQarIfZ6Z32AQmvB8qOI2wo1LsUD8cZvWQR4yqNR/Vzn ENfmzu/HaIKUt71SRWry7s/fW699/i/gV+LBxh5AA5esYm0UinbVX1i5P8KkaA0tMuDR Y6APLtoQ7WPkKYzj7ctBeSETQm0M4z/iXNIsEgq6ZQk3KCeNrAgDOVIGFPANq++bXG8W 8qIHoDZ2VpCfLOdZ8TaNQR+uSRlA9LJsf1USAvR7+qrrq8m/QZjbw+8p8dCmRvYPConH Wr6A== X-Received: by 10.194.243.170 with SMTP id wz10mr29817634wjc.80.1447568703477; Sat, 14 Nov 2015 22:25:03 -0800 (PST) In-Reply-To: <5647EF3B.20002@case.edu> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c09::241 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com gnu.bash.bug:11883 On Sun, Nov 15, 2015 at 10:34 AM, Chet Ramey wrote: > On 11/14/15 6:02 PM, Chet Ramey wrote: >> On 11/14/15 12:39 PM, konsolebox wrote: >>> On Fri, Nov 13, 2015 at 4:15 AM, Chet Ramey wrote: >>>> On 11/12/15 5:27 AM, konsolebox wrote: >>>>> My interactive (using `read`) Bash-script application still suspends >>>>> itself after >>>>> executing second instance of a player. I've only seen this happen in >>>>> the newest development version of Bash. >>>> >>>> According to the change log, the last time I made a change that might >>>> be relevant to this problem was April 23. You might try getting the >>>> version immediately preceding that one and seeing whether or not that >>>> version has the problem. >>>> >>> >>> This seems to be the modification that causes the problem. It's in >>> "commit bash-20150424 snapshot". >>> >>> --- a/jobs.c >>> +++ b/jobs.c >>> @@ -2658,8 +2658,8 @@ itrace("wait_for: blocking wait for %d returns >>> %d child = %p", (int)pid, r, chil >>> if (job == NO_JOB) >>> itrace("wait_for: job == NO_JOB, giving the terminal to shell_pgrp >>> (%ld)", (long)shell_pgrp); >>> #endif >>> - /* Don't modify terminal pgrp if we are running in the background */ >>> - if (running_in_background == 0) >>> + /* Don't modify terminal pgrp if we are running in background >>> or a subshell */ >>> + if (running_in_background == 0 && subshell_environment == 0) >>> give_terminal_to (shell_pgrp, 0); >>> } >>> > > Here, try this patch. It sort of splits the difference along the lines of > your suggestion, and it behaves correctly for the case that inspired the > change originally. > This seems to have fixed it both in bash-20151106 and bash-20150424. The parent shell no longer suspends.