Hi,

Cygwin on Windows 7, seems to exhibit a rather peculiar behavior: Sometimes the 
exit status of a Win32 process is incorrectly captured by Cygwin.

I'm running Cygwin 1.7.9(0.237/5/3) on Windows 7 64-bit, but I've reproduced 
this behavior with every release of Cygwin 1.7 on both 32-bit and 64-bit 
Windows 7. It does not seem to happen in XP 32-bit, and I've not tried any 
other environments.


To reproduce, first I wrote a Win32 console application (using Visual Studio 
2010 / cl.exe version 16 as my compiler) that exits with the status the user 
passes in:

> int _tmain(int argc, _TCHAR* argv[])
> {
>       int ret = _ttoi(argv[1]);
>       _tprintf(_T("Exiting with %i\n"), ret); 
>       
>       return ret;
> }


Then, I wrote a shell script that called this executable ("exiter.exe") with 
argument 0 in an infinite loop:

> #!/bin/sh
> set -e
> while true; do
>  /cygdrive/c/exiter.exe 0
> echo $?
> done
> 

I expect this script to run forever, as the exit code should always be zero. 
However, after running this overnight, I see the script terminate:

> Exiting with 0
> 0
> Exiting with 0
> 0
> Exiting with 0
> 0
> Exiting with 0
> 0
> Exiting with 0
> 
> $ echo $?
> 1
> 



The last line of output implies that exiter.exe executed "return 0", but 
/bin/sh saw a nonzero exit status (of 1) and thus stopped execution due to -e.

Reproducing this seems nondeterministic -- sometimes I can get it to happen in 
5 minutes, other times it takes overnight. I've tried using a different shell 
(like dash), but it doesn't make a difference, leading me to suspect this to be 
a lower-level issue within the Cygwin DLL. It also seems to not happen for 
non-zero exit codes (e.g. checking that exiter.exe 1 returns 1 always seems to 
succeed), though I'm not 100% confident that I've tested this thoroughly enough.

Again, I've not been able to reproduce this under Windows XP using any version 
of Cygwin, but I have been able to reproduce it on both 32-bit and 64-bit 
Windows 7. I'm not running anything special on this machine -- it's a fresh 
install of Windows 7 Professional, just with Cygwin installed.


Thanks in advance,

John


--
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

Reply via email to