From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id 0C75B385840E; Wed, 3 Nov 2021 14:12:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0C75B385840E Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: console: Prevent the exec'ed bash from exiting by Ctrl-C. X-Act-Checkin: newlib-cygwin X-Git-Author: Takashi Yano X-Git-Refname: refs/heads/master X-Git-Oldrev: eb628ca8eac37cc810d6b77c5fa376ce8125b570 X-Git-Newrev: d4e42ceb96b590f214b16442dc73f0c05db41e09 Message-Id: <20211103141252.0C75B385840E@sourceware.org> Date: Wed, 3 Nov 2021 14:12:52 +0000 (GMT) X-BeenThere: cygwin-cvs@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin core component git logs List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Nov 2021 14:12:52 -0000 https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=d4e42ceb96b590f214b16442dc73f0c05db41e09 commit d4e42ceb96b590f214b16442dc73f0c05db41e09 Author: Takashi Yano Date: Wed Nov 3 15:14:42 2021 +0900 Cygwin: console: Prevent the exec'ed bash from exiting by Ctrl-C. - Currently, bash occasionally exits by Ctrl-C with the following scenario. 1) Start bash in the command prompt. 2) Run 'exec bash'. 3) Press Ctrl-C several times. This patch fixes the issue. Diff: --- winsup/cygwin/sigproc.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 8e70a9329..97211edcf 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -594,6 +594,14 @@ sig_send (_pinfo *p, siginfo_t& si, _cygtls *tls) p = myself; } + /* If myself is the stub process, send signal to the child process + rather than myself. The fact that myself->dwProcessId is not equal + to the current process id indicates myself is the stub process. */ + if (its_me && myself->dwProcessId != GetCurrentProcessId ()) + { + wait_for_completion = false; + its_me = false; + } if (its_me) sendsig = my_sendsig;