This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Intermittent failures with ctrl-c


On Wed, Jan 16, 2013 at 11:37:43AM -0500, Tom Honermann wrote:
>On 01/15/2013 09:04 PM, Christopher Faylor wrote:
>> On Tue, Jan 15, 2013 at 05:16:57PM -0500, Tom Honermann wrote:
>>> I noticed that some changes were checked in related to signal handling
>>> and process termination recently, so I downloaded the most recent
>>> snapshot (20130114) and tested again.  I was still able to produce
>>> hanging processes (including hangs of strace.exe) by hitting ctrl-c in a
>>> mintty window while Cygwin processes ran in an infinite loop inside of a
>>> .bat file.  I was able to produce a hang ~1 out of 20 times.
>>
>> How does one run a .bat file inside mintty which handles CTRL-C?  AFAIK,
>> a CTRL-C will just cause the .bat file to exit when run under bash.
>
>Here is the test case:
>
>1) Install the latest snapshot
>
>2) Copy bash.exe, false.exe, and their dependent DLLs from a Cygwin 
>install into the usr/bin directory of the snapshot.  For me this 
>consisted of:
>   bash.exe
>   cygintl-8.dll
>   cygiconv-2.dll
>   cygreadline7.dll
>   cygncurses-10.dll
>   cygncursesw-10.dll
>   cyggcc_s-1.dll
>   false.exe
>
>3) Create 'test.bat' in the usr/bin directory of the snapshot with the 
>following contents:
>
>@echo off
>setlocal
>
>set PATH=%CD%;%PATH%
>
>:loop
>echo test...
>bash -c false
>if not errorlevel 1 (
>     echo exiting...
>     exit /B 1
>)
>goto loop
>
>4) Launch mintty using an existing Cygwin installation.  Naturally, this 
>will run a shell from the existing Cygwin install.
>
>5) Change directories to the usr/bin directory of the snapshot.
>
>6) Start task manager or some other process monitoring tool and keep it 
>running.  Run ./test.bat from the Cygwin shell running within mintty and 
>interrupt it with ctrl-c.  Repeat until you see a new bash.exe or 
>false.exe process persisting following the interrupt.  You'll likely 
>have multiple bash processes running.  If you are able to reproduce, you 
>should see one with a command line of 'bash -c false'.  Alternatively, 
>if your process monitoring tool shows the path to the executable, you'll 
>be able to identify it as the one from the usr/bin directory of the 
>snapshot.

Again, if I hit CTRL-C while running ./test.bat in mintty then test.bat
exits immediately, as expected.  Hitting ctrl-c repeatedly after that
point gives me a new bash prompt.

Non-exiting behavior was a symptom of a previous snapshot which was
mentioned here:

http://cygwin.com/ml/cygwin/2013-01/msg00164.html

>I rather doubt that the use of a .bat file is necessary to reproduce 
>this hang, but I haven't tried producing a test case that doesn't use a 
>.bat file.  This is a test case I was using when debugging the 
>intermittent incorrect exit code issue.

Btw, an incorrect exit code is still a possibility if you're running
from a cmd shell since it is possible to interrupt a cygwin process
before cygwin is entirely set up.  That will cause a normal windows
CTRL-C exit.

cgf

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]