I can still reproduce this on the latest snapshot. I also tried some different hardware and virtual machines too, and I don't think my machine is to blame.
Has anyone else been able to reproduce this bug? Or have pointers of further things I can do to diagnose it? Thanks in advance, John On Apr 29, 2011, at 11:35 AM, John Dong wrote: > 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 > -- 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