Crash report: exceptions.OSError

Leo Breebaart leo@lspace.org
Thu, 14 Mar 2002 18:20:51 +0100


Hi all,

One of the Changelog entries for 0.5.2 reads:

  [...] maybe this will fix a bug reported by John Goerzen wherein
  rdiff-backup can crash if file is deleted while rdiff-backup is
  processing it.

I am afraid that (a form of) this problem is still present in 0.5.4.

After our earlier troubles with inc files (see my previous mail to the
list) we decided to start over with a clean slate. So we removed the
rdiff-backup-data directory, and restarted rdiff-backup.

After a while it crashed with the stack trace I've appended to the end
of this mail. It is indeed the case that while rdiff-backup was running
I was also doing some housekeeping and happened to delete the
'jpegoptim' directory in question -- but that's no excuse for a crash...

Regards,

-- 
Leo Breebaart  <leo@lspace.org>

---------------------------------------------------------------------------

[falcon] # python2.2 ./rdiff-backup --force --exclude 'reeuwijk.*cache4'
--exclude 'leo.*mozilla.*Cache' --exclude /falcon/lost+found --exclude
/falcon/tmp --change-source-perms /falcon /backup/falcon.bak
Exception [Errno 2] No such file or directory:
'/falcon/leo/king/jpegoptim' raised of class exceptions.OSError
  File "./rdiff-backup", line 4467, in check_skip_error
    try: return thunk()
  File "./rdiff-backup", line 4408, in error_checked
    indexed_tuple = collated.next()
  File "./rdiff-backup", line 3288, in Collate2Iters
    try: relem1 = riter1.next()
  File "./rdiff-backup", line 4303, in diffs
    for dsrp, dest_sig in collated:
  File "./rdiff-backup", line 3296, in Collate2Iters
    try: relem2 = riter2.next()
  File "./rdiff-backup", line 3221, in Signatures
    for rp in rp_iter:
  File "./rdiff-backup", line 4357, in generate_dissimilar
    for src_rorp, dest_dsrp in collated:
  File "./rdiff-backup", line 3288, in Collate2Iters
    try: relem1 = riter1.next()
  File "./rdiff-backup", line 387, in yielda
    elem = iter.next() # exception will be passed
  File "./rdiff-backup", line 3641, in helper
    for dsrp in helper(dsrpath.append(filename)):
  File "./rdiff-backup", line 3641, in helper
    for dsrp in helper(dsrpath.append(filename)):
  File "./rdiff-backup", line 3641, in helper
    for dsrp in helper(dsrpath.append(filename)):
  File "./rdiff-backup", line 3638, in helper
    dir_listing = dsrpath.listdir()
  File "./rdiff-backup", line 2437, in listdir
    return self.conn.os.listdir(self.path)

---------------------------------------------------------------------------