rsync breaks on FreeBSD without -O2?(fwd from grog@FreeBSD.org) PR 36998
Martin Pool
mbp at samba.org
Sat Apr 20 19:38:02 EST 2002
Apparently rsync breaks on FreeBSD if you turn off -O2 (which is the
default.) The breakage is apparently inside zlib.
You'd have to think it was a compiler bug, but perhaps not.
I haven't tried to reproduce it yet.
--
Martin
----- Forwarded message from grog at FreeBSD.org -----
Date: Fri, 19 Apr 2002 23:14:46 -0700 (PDT)
From: <grog at FreeBSD.org>
To: mbp at samba.org
Subject: PR 36998
>From nobody at FreeBSD.org Thu Apr 11 10:49:33 2002
Return-Path: <nobody at FreeBSD.org>
Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21])
by hub.freebsd.org (Postfix) with ESMTP id B56BF37B416
for <freebsd-gnats-submit at FreeBSD.org>; Thu, 11 Apr 2002 10:49:32 -0700 (PDT)
Received: (from nobody at localhost)
by freefall.freebsd.org (8.11.6/8.11.6) id g3BHnWF98869;
Thu, 11 Apr 2002 10:49:32 -0700 (PDT)
(envelope-from nobody)
Message-Id: <200204111749.g3BHnWF98869 at freefall.freebsd.org>
Date: Thu, 11 Apr 2002 10:49:32 -0700 (PDT)
From: Donal Diamond <ddiamond at indigo.ie>
To: freebsd-gnats-submit at FreeBSD.org
Subject: rsync: -z option core dumps on large files
X-Send-Pr-Version: www-1.0
>Number: 36998
>Category: ports
>Synopsis: rsync: -z option core dumps on large files
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Apr 11 10:50:01 PDT 2002
>Closed-Date:
>Last-Modified: Mon Apr 15 15:10:01 PDT 2002
>Originator: Donal Diamond
>Release: 4.5-STABLE
>Organization:
>Environment:
FreeBSD donal.eng.eircom.net 4.5-STABLE FreeBSD 4.5-STABLE #0: Thu Jan 31 19:55:
40 GMT 2002 diamondd at donal.eng.eircom.net:/usr/obj/usr/cvsup/stable-releng4/
src/sys/DD_NFSD-SMBFS i386
>Description:
rsync port core dumps tansferring large files if you use -z/--compress option.(Problem does not occur if you install manually from source.) I made a basic rysnc port Makefile (no patches/options etc) and it still coredumps.
Here's a gdb from a normal port install that was tweaked to enable debug symbols:
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libc.so.4...done.
Reading symbols from /usr/libexec/ld-elf.so.1...done.
#0 0x8061823 in inflate_codes (s=0x807b040, z=0x80777c0, r=0) at zlib/infcodes.c:200
200 while (f < s->window) /* modulo window size-"while" instead */
(gdb) bt
#0 0x8061823 in inflate_codes (s=0x807b040, z=0x80777c0, r=0) at zlib/infcodes.c:200
#1 0x806104c in inflate_blocks (s=0x807b040, z=0x80777c0, r=-5) at zlib/infblock.c:340
#2 0x806243b in inflate (z=0x80777c0, f=0) at zlib/inflate.c:221
#3 0x805852f in recv_deflated_token (f=0, data=0xbfbfe8dc) at token.c:412
#4 0x805872e in recv_token (f=0, data=0xbfbfe8dc) at token.c:506
#5 0x804bd38 in receive_data (f_in=0, buf=0x0, fd=1, fname=0x8074a80 "master-bin.095", total_size=203874289) at receiver.c:224
#6 0x804c254 in recv_files (f_in=0, flist=0x807a090, local_name=0x0, f_gen=4) at receiver.c:456
#7 0x804fe23 in do_recv (f_in=0, f_out=1, flist=0x807a090, local_name=0x0) at main.c:398
#8 0x80500da in do_server_recv (f_in=0, f_out=1, argc=2, argv=0xbfbff718) at main.c:491
#9 0x8050188 in start_server (f_in=0, f_out=1, argc=2, argv=0xbfbff718) at main.c:519
#10 0x804e048 in local_child (argc=2, argv=0xbfbff718, f_in=0xbfbff900, f_out=0xbfbff904) at util.c:212
#11 0x804f969 in do_cmd (cmd=0x0, machine=0x0, user=0x0, path=0x807a080 ".", f_in=0xbfbff900, f_out=0xbfbff904) at main.c:234
#12 0x8050752 in start_client (argc=2, argv=0x8078060) at main.c:772
#13 0x80509dc in main (argc=2, argv=0x8078060) at main.c:921
#14 0x804a01d in _start ()
(gdb) p s
$1 = (inflate_blocks_statef *) 0x807b040
(gdb) p *s
$2 = {dummy = 6}
(gdb) p z
$3 = 0x80777c0
(gdb) p *z
$4 = {next_in = 0x8091ff6 "!.îYõºùúÕ", avail_in = 9, total_in = 16374, next_out = 0x809a000 <Address 0x809a000 out of bounds>, avail_out = 0, total_out = 98304, msg = 0x0,
state = 0x8078100, zalloc = 0x8064f18 <zcalloc>, zfree = 0x8064f30 <zcfree>, opaque = 0x0, data_type = 0, adler = 0, reserved = 0}
>How-To-Repeat:
transfer a large (binary?) file with compression on. local to local transfers also fail.
rsync -azv / rsync://sunsite.dk/ftp//mirrors/mysql/Downloads/Contrib/MyAccess.mda .
rsync: connection unexpectedly closed (930 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
>Fix:
>Release-Note:
>Audit-Trail:
From: Donal Diamond <donal.diamond at eircom.net>
To: FreeBSD-gnats-submit at FreeBSD.org, freebsd-ports at FreeBSD.org
Cc:
Subject: Re: ports/36998: rsync: -z option core dumps on large files
Date: Thu, 11 Apr 2002 19:00:06 +0100
Apologies, I have a typo for the command.
Command should be:
rsync -azv rsync://sunsite.dk/ftp//mirrors/mysql/Downloads/Contrib/MyAccess.mda .
Also, forgot to state rsync version:
$rsync --version
rsync version 2.5.5 protocol version 26
Copyright (C) 1996-2002 by Andrew Tridgell and others
<http://rsync.samba.org/>
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,
IPv6, 32-bit system inums, 64-bit internal inums
Donal
From: Oliver Braun <obraun at informatik.unibw-muenchen.de>
To: Donal Diamond <ddiamond at indigo.ie>
Cc: freebsd-gnats-submit at FreeBSD.ORG
Subject: Re: ports/36998: rsync: -z option core dumps on large files
Date: Thu, 11 Apr 2002 21:15:27 +0200
Thanks for your report.
I am going to check this next week, since I am on a official journey
from tomorrow morning until next week.
Regards,
Olli
From: Oliver Braun <obraun at informatik.unibw-muenchen.de>
To: Donal Diamond <donal.diamond at eircom.net>
Cc: FreeBSD-gnats-submit at FreeBSD.ORG
Subject: Re: ports/36998: [MAINTAINER UPDATE] solution for rsync: -z option core dumps on large files
Date: Mon, 15 Apr 2002 23:42:25 +0200
[MAINTAINER UPDATE]
rsync -z works if compiled with CFLAGS including at least -O2
optimization level.
The following patch checks whether -O[2-6] is part of CFLAGS.
Otherwise -O2 will be appended.
[ From the gcc manual:
If you use multiple `-O' options, with or without level numbers,
the last such option is the one that is effective. ]
Bumped PORTREVISION
Regards,
Olli
--------------------------------------------------------------------------
diff -ruN rsync.old/Makefile rsync/Makefile
--- rsync.old/Makefile Mon Apr 15 23:13:44 2002
+++ rsync/Makefile Mon Apr 15 23:25:50 2002
@@ -8,7 +8,7 @@
PORTNAME= rsync
PORTVERSION= 2.5.5
-PORTREVISION= 0
+PORTREVISION= 1
CATEGORIES= net ipv6
MASTER_SITES= ftp://samba.anu.edu.au/pub/rsync/ \
ftp://sunsite.auc.dk/pub/unix/rsync/ \
@@ -18,6 +18,11 @@
MAINTAINER= obraun at informatik.unibw-muenchen.de
GNU_CONFIGURE= yes
+
+OPTIMIZATION!= ${ECHO} "${CFLAGS}" | grep '\-O[2-6]' || true
+.if empty(OPTIMIZATION)
+CFLAGS+= -O2
+.endif
.include <bsd.port.pre.mk>
>Unformatted:
----- End forwarded message -----
--
Martin
More information about the rsync
mailing list