bugrdiff-backup - Bugs: bug #27795, Symlink to self on filesystem...

 
 

bug #27795: Symlink to self on filesystem results in xattr related crash

Submitter:  Simon Blandford <sblandford>
Submitted:  Sat 24 Oct 2009 07:37:00 AM UTC
   
 
Category:  None Severity:  3 - Normal
Item Group:  None Status:  Works For Me
Privacy:  Public Assigned to:  None
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

Mon 24 Feb 2020 04:39:22 PM UTC, comment #1: 

It seems that the issue has been resolved in the mean time. If you encounter it again, don't hesitate to re-open a bug at https://github.com/rdiff-backup/rdiff-backup/issues

Eric L. <ericzolf>
Group administrator
Sat 24 Oct 2009 07:37:00 AM UTC, original submission:  

Using rdiff-backup-1.2.8-1.el5.rf with pyxattr-0.4.0-2.el5 on Centos 5.3.

The filesystem being backed up contains a symlink to itself.
[root@staticweb ~]# cd /usr/local/include/libpng/
[root@staticweb libpng]# ll
total 4
lrwxrwxrwx 1 root root 8 Apr 29 13:02 libpng12 -> libpng12

This results in rdiff-backup crashing when attempting to make a backup of it. Although symlinks to self are not useful rdiff-backup should not crash. rdiff-backup only started crashing on this condition since I installed pyxattr.

diff-backup --exclude-sockets --exclude-globbing-filelist /mnt/xen1_backup/staticweb.xyz.com/config/rdiff_exclude_list --force 124.100.13.8::/mnt/
snapshots/ /mnt/xen1_backup/staticweb.xyz.com/data
Warning: Access Control List file not found
Warning: Extended Attributes file not found
Exception '[Errno 40] Too many levels of symbolic links: '/mnt/xen1_backup/staticweb.xyz.com/data/usr/local/include/libpng/rdiff-backup.tmp.217089'
' raised of class 'exceptions.IOError':
Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 30, in ?
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 324, in Main
    take_action(rps)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 280, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 343, in Backup
    backup.Mirror_and_increment(rpin, rpout, incdir)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 51, in Mirror_and_increment
    DestS.patch_and_increment(dest_rpath, source_diffiter, inc_rpath)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 243, in patch_and_increment
    ITR(diff.index, diff)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/rorpiter.py", line 281, in _call_
    last_branch.fast_process(*args)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 692, in fast_process
    if self.patch_to_temp(mirror_rp, diff_rorp, tf):
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 553, in patch_to_temp
    result = self.patch_snapshot_to_temp(diff_rorp, new)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 578, in patch_snapshot_to_temp
    rpath.copy_attribs(diff_rorp, new)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/rpath.py", line 181, in copy_attribs
    if Globals.eas_write: rpout.write_ea(rpin.get_ea())
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/rpath.py", line 1347, in write_ea
    ea.write_to_rp(self)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/eas_acls.py", line 114, in write_to_rp
    rp.conn.xattr.setxattr(rp.path, name, value, 0, rp.issym())
  File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 188, in setxattr
    return xattr(f).set(attr, value, options=options)
  File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 81, in set
    self._set(name, value, 0, options | self.options)
  File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 16, in _func
    return func(first, *args)
IOError: [Errno 40] Too many levels of symbolic links: '/mnt/xen1_backup/staticweb.xyz.com/data/usr/local/include/libpng/rdiff-backup.tmp.217089'

Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 30, in ?
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 324, in Main
    take_action(rps)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 280, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/Main.py", line 343, in Backup
    backup.Mirror_and_increment(rpin, rpout, incdir)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 51, in Mirror_and_increment
    DestS.patch_and_increment(dest_rpath, source_diffiter, inc_rpath)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 243, in patch_and_increment
    ITR(diff.index, diff)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/rorpiter.py", line 281, in _call_
    last_branch.fast_process(*args)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 692, in fast_process
    if self.patch_to_temp(mirror_rp, diff_rorp, tf):
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 553, in patch_to_temp
    result = self.patch_snapshot_to_temp(diff_rorp, new)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/backup.py", line 578, in patch_snapshot_to_temp
    rpath.copy_attribs(diff_rorp, new)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/rpath.py", line 181, in copy_attribs
    if Globals.eas_write: rpout.write_ea(rpin.get_ea())
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/rpath.py", line 1347, in write_ea
    ea.write_to_rp(self)
  File "/usr/lib64/python2.4/site-packages/rdiff_backup/eas_acls.py", line 114, in write_to_rp
    rp.conn.xattr.setxattr(rp.path, name, value, 0, rp.issym())
  File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 188, in setxattr
    return xattr(f).set(attr, value, options=options)
  File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 81, in set
    self._set(name, value, 0, options | self.options)
  File "/usr/lib64/python2.4/site-packages/xattr-0.4-py2.4-linux-x86_64.egg/xattr/__init__.py", line 16, in _func
    return func(first, *args)
IOError: [Errno 40] Too many levels of symbolic links: '/mnt/xen1_backup/staticweb.xyz.com/data/usr/local/include/libpng/rdiff-backup.tmp.217089'
Fatal Error: Lost connection to the remote system

Simon Blandford <sblandford>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by ericzolf (Posted a comment)
  • -email is unavailable- added by sblandford (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 2 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2020-02-24 ericzolf StatusNone Works For Me
        Open/ClosedOpen Closed

    Back to the top

    Powered by Savane 3.13-f8d8.
    Corresponding source code