On Apr 19 11:01, Mark Riley wrote: > After having problems with rsync (2.6.6) hanging while pushing files > to a Cygwin machine over ssh, I searched the lists here and found > that many other users were experiencing the same problem. While > some solutions seemed to mitigate the problem, there are still some > users experiencing this problem (myself included). > > After wading through massive(!) strace output files, it appears that > an interaction between tcsh and rsync on the remote Cygwin machine > is the culprit. If the remote machine is configured to use bash as the > login shell, then the problem disappears - rsync works fine. This > might explain why some users can't reproduce the problem (they don't > use tcsh). > > When rsync connects to the remote machine using ssh, sshd launches > a login shell (tcsh in this case) before the remote rsync command is run. > Perusing the source for tcsh, it can be seen that tsch calls setmode(fd, > O_TEXT) on the pipe supplied to it by sshd. When rsync is subsequently > invoked, it inherits this pipe. Rsync apparently assumes it is getting an > O_BINARY pipe and fails miserably when \r\n combinations are > translated to \n. > > Recompiling rsync with > > setmode(STDIN_FILENO, O_BINARY); > setmode(STDOUT_FILENO, O_BINARY); > > placed near the beginning of main() fixes the problem and I can now > use tcsh as my login shell on the remote machine again. > > This may not be the ideal solution, but other solutions I've tried like > putting "binmode" in the CYGWIN environment variable on the remote > machine or invoking rsync with the --rsh="ssh -T" option didn't > help. > > Anyway, I hope this solution works for some of the others out there > experiencing this problem.
This is IMHO a problem in both applications, rsync and tcsh. rsync should always make sure that its IO on the pipe is binary (as you do above, for instance), and tcsh shouldn't assume O_TEXT for all input. The latter is something I plan to change for years, but I got always distracted by other stuff. Maybe this year?!? Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/