Hi, On Sat, Aug 22, 2009 at 2:44 AM, Ralf Wildenhues<[email protected]> wrote: > > * Eric Blake wrote on Fri, Aug 21, 2009 at 01:51:29AM CEST: >> Or does it require a more complex function body, to show the difference >> where the subshell avoids the crash? At any rate, we'll need to >> characterize exactly what your shell's bug is. > > We could use as_fn_set_status everywhere, and only define that to > use a subshell if we detect 2.05a. That shouldn't penalize users of > non-broken shells so much. (Of course, this is pretty vague given > that we don't know what exactly the bug is.)
Honestly, I can't test Bash 2.x on any other platform, but I do strongly suspect it's a DJGPP bug (due to no fork() support). Both "modern" DJGPP ports of 2.04 and 2.05b have the bug. And the sources are ridiculously complex, but here's my best attempt at narrowing down the problem (actually, Gordon Schumacher originally mentioned this exact same bug on the mailing list / newsgroup in May 2004 !!): Here's Gordon's simple example to narrow down the problem: http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp/2006/08/08/16:37:27 And here's Esa's attempt to identify why it crashes. Possibly a setjmp not returning. (Note that nobody has been able to fix this yet. Even back in 2006 both Martin and Andris tried and failed.) http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp/2006/08/20/11:54:36 Long story short: something to do with executing a binary within a shell function. Probably in subst.c or execute_cmd.c, but I'm not sure. (8 MB of sources, and I'm sure newer versions are probably even more confusing!!) You think Chet would care? Heh, doubt it. Well ... apparently his web site doesn't suggest e-mail is a "bad thing", so I'll just cc him here. Besides, I think I once had an Uncle Ramey (not anywhere near Ohio, though). ;-) P.S. At the very least, I suggest you put a comment mentioning the "( return $ac_retval )" workaround so that some DJGPP user browsing the main "./configure" file can see how to manually work around it (without penalizing slow Cygwin, heh).
