Mail Archives: cygwin/2009/08/19/14:07:38
Follow-up:
I can confirm that your example using rsync to fetch a remote tree also
fails on my system.
I built a work-around into cygwin1.dll that solves the first failure
cases in which socketpair() is involved on a system-wide basis, so
individual applications don't have to be patched. The problem is not
unique to rsync.
Your case appears indeed different on the surface, but I suspect the
underlying root cause is likely the same.
$ rsync -av --delete --exclude=.svn tug.org::tldevsrc/Build/source/
/tmp/tl-src
receiving incremental file list
rsync: read error: Socket operation on non-socket (108)
rsync error: error in rsync protocol data stream (code 12) at
/home/lapo/packaging/rsync-3.0.5-1/src/rsync-3.0.5/io.c(759)
[receiver=3.0.5]
rsync: connection unexpectedly closed (363 bytes received so far)
[generator]
rsync error: error in rsync protocol data stream (code 12) at
/home/lapo/packaging/rsync-3.0.5-1/src/rsync-3.0.5/io.c(600)
[generator=3.0.5]
The problem occurs when a socket gets dup()'ed, both file descriptors
should work interchangeably for i/o, but the second descriptor clearly
doesn't. It either hangs or produces exceptions on reading or writing,
and fails on close.
On my system, this happens only when using IPv4 transport, under IPv6 it
seems to work fine.
I reported initially that this only happens when duping to STDIN, but
that was wrong, a result of a typo in the test program.
I checked for interfering programs against the list, not running any of
them. The system doesn't run any antivirus or firewalling software either.
Since this works fine with cygwin 1.5, there must be some changes in 1.7
that interfere with some programs using the IPv4 stack somehow.
-Karl
[this is a resend, seems this didn't make it to the list in an earlier
transmission]
Angelo Graziosi wrote:
> For the sake of completeness...
>
> I wrote:
>
>> May you give some more details? For example, should I rebuild under
>> Cygwin-1.5 or 1.7? with cygport (but which uses rsync, sigh!)? which
>> patch to apply?...
>
> I have rebuilt rsync-3.05 both on Cygwin-1.5 and 1.7 applying this patch:
>
> --- util.c.orig 2008-11-15 23:17:49.000000000 +0100
> +++ util.c 2009-08-16 03:07:20.390625000 +0200
> @@ -78,11 +78,7 @@
> {
> 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]);
>
> Using the resulting binaries on Cygwin-1.7, there is a little step
> forward. Now
>
> $ ./rsync -av downloads /tmp
>
> works, but
>
> ./rsync -av --delete --exclude=.svn tug.org::tldevsrc/Build/source/
> /tmp/tl-src
>
> does NOT! :-(
>
>
> Cheers,
> Angelo.
>
--
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
- Raw text -