[Python-apps-team] Bug#626113: rdiff-backup: python backtrace when using --verify (IOError: CRC check failed)

Jon Dowland jmtd at debian.org
Sun May 8 22:32:16 UTC 2011


Package: rdiff-backup
Version: 1.2.8-6
Severity: normal

The first warning in the command below is caused by my last
backup attempt failing due to running out of space on my
backup partition.

I want to clean that up but --check-destination-dir won't
work if it can't create temporary files.   So, I need to 
clear up some space.  Firstly, I'd like to verify all is
well with the repository, which is when I hit this bug:

> $ rdiff-backup --verify $(pwd)/jon
> Warning, two different times for current mirror found
> Warning: Extended Attributes file not found
> Exception 'CRC check failed 0xde29031bL != 0x1cab91f0L' raised of class '<type 'exceptions.IOError'>':
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 304, in error_check_Main
>     try: Main(arglist)
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 324, in Main
>     take_action(rps)
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 292, in take_action
>     elif action == "verify": Verify(rps[0])
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 859, in Verify
>     return_val = dest_rp.conn.compare.Verify(mirror_rp, inc_rp, verify_time)
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/compare.py", line 81, in Verify
>     for repo_rorp in repo_iter:
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/eas_acls.py", line 207, in join_ea_iter
>     for rorp, ea in rorpiter.CollateIterators(rorp_iter, ea_iter):
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/rorpiter.py", line 103, in Collate2Iters
>     for relem1 in riter1:
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/metadata.py", line 274, in iterate
>     for record in self.iterate_records():
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/metadata.py", line 283, in iterate_records
>     next_pos = self.get_next_pos()
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/metadata.py", line 266, in get_next_pos
>     newbuf = self.fileobj.read(self.blocksize)
>   File "/usr/lib/python2.6/gzip.py", line 219, in read
>     self._read(readsize)
>   File "/usr/lib/python2.6/gzip.py", line 267, in _read
>     self._read_eof()
>   File "/usr/lib/python2.6/gzip.py", line 304, in _read_eof
>     hex(self.crc)))
> 
> Traceback (most recent call last):
>   File "/usr/bin/rdiff-backup", line 30, in <module>
>     rdiff_backup.Main.error_check_Main(sys.argv[1:])
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 304, in error_check_Main
>     try: Main(arglist)
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 324, in Main
>     take_action(rps)
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 292, in take_action
>     elif action == "verify": Verify(rps[0])
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 859, in Verify
>     return_val = dest_rp.conn.compare.Verify(mirror_rp, inc_rp, verify_time)
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/compare.py", line 81, in Verify
>     for repo_rorp in repo_iter:
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/eas_acls.py", line 207, in join_ea_iter
>     for rorp, ea in rorpiter.CollateIterators(rorp_iter, ea_iter):
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/rorpiter.py", line 103, in Collate2Iters
>     for relem1 in riter1:
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/metadata.py", line 274, in iterate
>     for record in self.iterate_records():
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/metadata.py", line 283, in iterate_records
>     next_pos = self.get_next_pos()
>   File "/usr/lib/pymodules/python2.6/rdiff_backup/metadata.py", line 266, in get_next_pos
>     newbuf = self.fileobj.read(self.blocksize)
>   File "/usr/lib/python2.6/gzip.py", line 219, in read
>     self._read(readsize)
>   File "/usr/lib/python2.6/gzip.py", line 267, in _read
>     self._read_eof()
>   File "/usr/lib/python2.6/gzip.py", line 304, in _read_eof
>     hex(self.crc)))
> IOError: CRC check failed 0xde29031bL != 0x1cab91f0L

It's possible this CRC check failure is due to corruption on
my backup partition -- in which case I'd like rdiff-backup
to tell me which file(s) are corrupt.  I don't know whether
the process completed or whether this backtrace was thrown
as part of the entire verify process aborting.


-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (150, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.38-rc5+ (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages rdiff-backup depends on:
ii  libc6                         2.11.2-11  Embedded GNU C Library: Shared lib
ii  librsync1                     0.9.7-7    rsync remote-delta algorithm libra
ii  python                        2.6.6-14   interactive high-level object-orie
ii  python-support                1.0.13     automated rebuilding support for P

Versions of packages rdiff-backup recommends:
ii  python-pylibacl               0.5.0-3+b1 module for manipulating POSIX.1e A
ii  python-pyxattr                0.5.0-3+b1 module for manipulating filesystem

rdiff-backup suggests no packages.

-- no debconf information





More information about the Python-apps-team mailing list