I'm currently experimenting with compiling rdfind for Cygwin, and one of the testcases is failing because std::runtime_error is expected to result in the compiled program exiting with a non-zero return code, but on Cygwin, it just seems to cause the program to terminate with a zero return code. I've attached a simple test case. Compare the output on Cygwin... $ ./test.sh + cat + g++ test.cc + [[ -x a.exe ]] + ./a.exe + rc=0 + (( rc == 0 )) + echo 'Unexpected zero return code from execution' Unexpected zero return code from execution + exit 1 ...with the output from one of my Debian boxes... $ ./test.sh + cat + g++ test.cc + [[ -x a.exe ]] + [[ -x a.out ]] + ./a.out terminate called after throwing an instance of 'std::runtime_error' what(): Test error ./test.sh: line 21: 566327 Aborted ./a.out + rc=134 + (( rc == 0 )) + echo 'Expected non-zero return code received: 134' Expected non-zero return code received: 134 + exit 0 I'm not massively familiar with C++, so I could well be missing something obvious, but this seems like an unexpected difference between Cygwin and other *nix platforms. Is this a Cygwin bug, or am I doing something wrong? cygcheck -srv output attached as well, from a minimal sandbox system I used to confirm the issue wasn't just my environment.