On Mon, Apr 16, 2012 at 01:42:30PM -0400, Jeff King wrote: > > Hmm. t5570 seems to pass reliably on dash for me with: > > diff --git a/t/lib-git-daemon.sh b/t/lib-git-daemon.sh > index ef2d01f..9f52cb6 100644 > --- a/t/lib-git-daemon.sh > +++ b/t/lib-git-daemon.sh > @@ -33,7 +33,7 @@ start_git_daemon() { > { > read line > echo >&4 "$line" > - cat >&4 & > + cat >&4 <git_daemon_output & > > # Check expected output > if test x"$(expr "$line" : "\[[0-9]*\] \(.*\)")" != x"Ready to rumble" Yes, me too. I can reproduce reliably with dash and the above fixes it reliably. > But the test above does fail. Which one do you mean? The output check works for me. > Is it purely luck of the timing that git-daemon never gets SIGPIPE? I > guess the problem is that the {}-section can finish before "cat > <git_daemon_output" has actually opened the pipe? No clue. But shouldn't the fork return only after the fd's have been opened successfully? If I change cat to "(echo di; cat; echo do); sleep 1; pgrep yes", then one can see that cat terminates right away, even though yes is still running. It's as if cat never gets to read from the pipe, but from /dev/null instead. A bug in dash? > I'd just feel better about the solution if we were sure we understood > the exact problem. Yeah. I have to admit that I have a strongly empirical approach to these things and no true understanding of the inner workings. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html