Problem with rsync 3.0.6-1 under 1.7.0-62 and 63

Eliot Moss moss@cs.umass.edu
Sun Nov 8 15:18:00 GMT 2009


Eliot Moss wrote:
> Tried two more things ...
> 
> - rsync in the opposite direction fails in the same way
> 
> - adding --protocol=29 (to match the remote end) did not
>   change the behavor
> 
> Unfortunately no other version of rsync is available with
> cygwin 1.7.x, so I can't simply install an earlier version.
> I think I'll need to obtain source and build it myself.
> Maybe later today ....

Rebuilding from source had no effect -- I did apply first
the 3.0.6-1.src patch and then the cygwin patch.

So I tried strace to get more info. The first failure is
at a dup2 call immediately after a fork() call. The dup2
args are (3, 0) and Win32 returns error 6, which cygwin
translates to 9 (EBADF). Near as I can tell, fd 3 is a
socket.

The code is in piped_child in pipe.c; here is the comment
at the top of that routine:

/**
  * Create a child connected to us via its stdin/stdout.
  *
  * This is derived from CVS code
  *
  * Note that in the child STDIN is set to blocking and STDOUT
  * is set to non-blocking. This is necessary as rsh relies on stdin being blocking
  *  and ssh relies on stdout being non-blocking
  *
  * If blocking_io is set then use blocking io on both fds. That can be
  * used to cope with badly broken rsh implementations like the one on
  * Solaris.
  **/

Not sure if I am reporting the most helpful stuff, but there
it is. Any ideas on how I can help resolve this? There does
not seem to be anything like this reported in the rsync list,
so I think it's particular to cygwin, and probably to 1.7.x.

Cheers -- Eliot Moss

--
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



More information about the Cygwin mailing list