g2p / bedup

Btrfs deduplication
http://pypi.python.org/pypi/bedup
GNU General Public License v2.0
322 stars 50 forks source link

Dedup crashes when AppImage is running #96

Open MarcelWaldvogel opened 6 years ago

MarcelWaldvogel commented 6 years ago

I have OpenShot running and tried to dedup an unrelated disk. This crashes with the following error message:

Scanning volume /media/me/Backup generations from 5867 to 5949, with size cutoff 111000
01:05:01 Scanned 171494887 retained 65
Deduplicating filesystem <Backup>
05.58 Size group 1/104 (26214400) sampled 45 hashed 0 freed 0
Traceback (most recent call last):
  File "/usr/local/bin/bedup", line 11, in <module>
    load_entry_point('bedup==0.10.1', 'console_scripts', 'bedup')()
  File "/usr/local/lib/python3.6/dist-packages/bedup/__main__.py", line 497, in script_main
    sys.exit(main(sys.argv))
  File "/usr/local/lib/python3.6/dist-packages/bedup/__main__.py", line 486, in main
    return args.action(args)
  File "/usr/local/lib/python3.6/dist-packages/bedup/__main__.py", line 196, in vol_cmd
    dedup_tracked(sess, volset, tt, defrag=args.defrag)
  File "/usr/local/lib/python3.6/dist-packages/bedup/tracking.py", line 405, in dedup_tracked
    dedup_tracked1(ds, comm1)
  File "/usr/local/lib/python3.6/dist-packages/bedup/tracking.py", line 573, in dedup_tracked1
    if fd in immutability.fds_in_write_use:
  File "/usr/local/lib/python3.6/dist-packages/bedup/dedup.py", line 256, in fds_in_write_use
    self.__require_use_info()
  File "/usr/local/lib/python3.6/dist-packages/bedup/dedup.py", line 242, in __require_use_info
    for (fd, use_info) in find_inodes_in_write_use(self.__fds):
  File "/usr/local/lib/python3.6/dist-packages/bedup/dedup.py", line 115, in find_inodes_in_write_use
    for (fd, use_info) in find_inodes_in_use(fds):
  File "/usr/local/lib/python3.6/dist-packages/bedup/dedup.py", line 161, in find_inodes_in_use
    for proc_path, st_id in st_id_candidates(glob.glob('/proc/[1-9]*/fd/*')):
  File "/usr/local/lib/python3.6/dist-packages/bedup/dedup.py", line 145, in st_id_candidates
    st = os.stat(proc_path)
PermissionError: [Errno 13] Permission denied: '/proc/5894/fd/1023'

Process 5894 is the OpenShot process and FD 1023 is the mount point:

lr-x------ 1 marcel marcel 64 Apr  2 13:02 1023 -> /tmp/.mount_wKwsru

This shouldn't cause a fatal error, especially as it is on an unrelated disk.

I assume this applies to other programs running as AppImage as well.

Nothing4You commented 6 years ago

Same issue here, in my case the fds were links to stale network mounts. Closing the applications holding those fps fixed it for me.