After updating 2 other systems to cygwin 1.7, I find that they also work
fine in the same test.
However, that doesn't help much debugging this.
I found that the problem on the failing system is related to using Unix
domain sockets for the IPC pipes.
If I replace the socketpair() call in fd_pair() in file util.c with
pipe(), everything works fine.
int fd_pair(int fd[2])
{
int ret;
//#ifdef HAVE_SOCKETPAIR
// ret = socketpair(AF_UNIX, SOCK_STREAM, 0, fd);
//#else
ret = pipe(fd);
//#endif
if (ret == 0) {
set_nonblocking(fd[0]);
set_nonblocking(fd[1]);
}
return ret;
}
The fact that cygwin 1.5 works fine on this system indicates that
something is going wrong in 1.7 cygwin1.dll triggered by some conditions
on this particular system.
Corinna Vinschen wrote:
On Aug 13 13:17, cygwin wrote:
The RSYNC application fails in close() on the pipe streams to and from
child processes created when rsync starts.
When running rsync.exe and cygwin1.dll from cygwin 1.5 within the 1.7
installation on the same system (WinXP pro),
the identical invocation completes without errors.
The problems appears to be a bug in the cygwin.dll
For example,
$ rsync -a /etc /test
produces the following messages:
rsync: Failed to dup/close: Socket operation on non-socket (108)
rsync error: error in IPC code (code 14) at pipe.c(147) [receiver=3.0.5]
rsync: read error: Connection reset by peer (104)
rsync error: error in IPC code (code 14) at io.c(759) [sender=3.0.5]
I tested the exact above command with cygwin 1.7-0-58 and rsync-3.0.5-1
on Windows 7, WIndows Server 2008 SP2, as well as on XP SP3.
Works fine for me on all three systems.
Corinna
--
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