Bug#874582: diffoscope: caughts exception, while handling "no space left on device" exception

Holger Levsen holger at debian.org
Thu Sep 7 14:55:49 UTC 2017


Package: diffoscope
Version: 78
Severity: minor

hi,

when diffoscope hits ENOSPACE this is excepted, but sadly not really:

$ diffoscope doc/debian-edu-doc_1.923~20170823_amd64.changes debian-edu-doc_1.923~20170823_amd64.changes
Traceback (most recent call last):###########################|  100%                             ETA:  0:00:00 
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/libarchive.py", line 232, in ensure_unpacked
    f.write(block)
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 285, in main
    sys.exit(run_diffoscope(parsed_args))
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 261, in run_diffoscope
    parsed_args.path1, parsed_args.path2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 64, in compare_root_paths
    return compare_files(file1, file2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 91, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/debian.py", line 185, in compare
    differences = super().compare(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 237, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 194, in _compare_using_details
    details.extend(filter(None, self.as_container.compare(other.as_container)))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 94, in compare_commented_files
    difference = compare_files(file1, file2, source=source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 91, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 237, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 194, in _compare_using_details
    details.extend(filter(None, self.as_container.compare(other.as_container)))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 94, in compare_commented_files
    difference = compare_files(file1, file2, source=source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 91, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 237, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 194, in _compare_using_details
    details.extend(filter(None, self.as_container.compare(other.as_container)))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 94, in compare_commented_files
    difference = compare_files(file1, file2, source=source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 91, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 237, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 194, in _compare_using_details
    details.extend(filter(None, self.as_container.compare(other.as_container)))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 94, in compare_commented_files
    difference = compare_files(file1, file2, source=source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 79, in compare_files
    if file1.has_same_content_as(file2):
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 203, in has_same_content_as
    if os.path.isdir(self.path) or os.path.isdir(other.path):
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/archive.py", line 88, in path
    self._path = self.container.extract(self._name, self._temp_dir.name)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/libarchive.py", line 176, in extract
    self.ensure_unpacked()
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/libarchive.py", line 232, in ensure_unpacked
    f.write(block)
OSError: [Errno 28] No space left on device


Please make diffoscope fail more gracefully, that is, without showing all this traceback to the user.

-- 
cheers,
	Holger
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 811 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/reproducible-builds/attachments/20170907/e7d23459/attachment.sig>


More information about the Reproducible-builds mailing list