Bug#903449: diffoscope: RecursionError with ghc/8.4.3-1

Mattia Rizzolo mattia at debian.org
Tue Jul 10 09:15:57 BST 2018


Package: diffoscope
Version: 98
Severity: important

As seen with ghc/8.4.3-1 on experimental/amd64:

Thu Jul  5 10:46:13 UTC 2018  I: diffoscope 98 will be used to compare the two builds:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 460, in main
    sys.exit(run_diffoscope(parsed_args))
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 432, in run_diffoscope
    difference = compare_root_paths(path1, path2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 68, in compare_root_paths
    difference = compare_files(file1, file2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/debian.py", line 184, in compare
    differences = super().compare(other, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 366, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 321, in _compare_using_details
    other.as_container, no_recurse=no_recurse))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/container.py", line 177, in compare_pair
    file1, file2, source=None, diff_content_only=no_recurse)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 366, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 321, in _compare_using_details
    other.as_container, no_recurse=no_recurse))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/container.py", line 177, in compare_pair
    file1, file2, source=None, diff_content_only=no_recurse)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 366, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 321, in _compare_using_details
    other.as_container, no_recurse=no_recurse))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/container.py", line 177, in compare_pair
    file1, file2, source=None, diff_content_only=no_recurse)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 366, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 321, in _compare_using_details
    other.as_container, no_recurse=no_recurse))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/container.py", line 177, in compare_pair
    file1, file2, source=None, diff_content_only=no_recurse)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 366, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 321, in _compare_using_details
    other.as_container, no_recurse=no_recurse))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/container.py", line 177, in compare_pair
    file1, file2, source=None, diff_content_only=no_recurse)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 118, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 366, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 304, in _compare_using_details
    details.extend(self.compare_details(other, source))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/json.py", line 73, in compare_details
    diff = {repr(x): y for x, y in jsondiff.diff(a, b).items()}
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 597, in diff
    return cls(**kwargs).diff(a, b, fp)
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 501, in diff
    d, s = self._obj_diff(a, b)
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 488, in _obj_diff
    return self._list_diff(a, b)
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 408, in _list_diff
    for sign, value, pos, s in self._list_diff_0(C, X, Y, len(X), len(Y)):
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 374, in _list_diff_0
    for annotation in self._list_diff_0(C, X, Y, i-1, j-1):
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 374, in _list_diff_0
    for annotation in self._list_diff_0(C, X, Y, i-1, j-1):
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 374, in _list_diff_0
    for annotation in self._list_diff_0(C, X, Y, i-1, j-1):
  [Previous line repeated 354 more times]
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 379, in _list_diff_0
    for annotation in self._list_diff_0(C, X, Y, i, j-1):
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 384, in _list_diff_0
    for annotation in self._list_diff_0(C, X, Y, i-1, j):
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 374, in _list_diff_0
    for annotation in self._list_diff_0(C, X, Y, i-1, j-1):
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 374, in _list_diff_0
    for annotation in self._list_diff_0(C, X, Y, i-1, j-1):
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 374, in _list_diff_0
    for annotation in self._list_diff_0(C, X, Y, i-1, j-1):
  [Previous line repeated 593 more times]
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 372, in _list_diff_0
    d, s = self._obj_diff(X[i-1], Y[j-1])
  File "/usr/lib/python3/dist-packages/jsondiff/__init__.py", line 491, in _obj_diff
    elif a != b:
RecursionError: maximum recursion depth exceeded in comparison


I don't have artifacts for this, so I didn't try to reproduce it.  Also
it doesn't seem very reproducible either, as other suites/architectures
didn't hit this crash in their last run.  Nonetheless, I figured I'd
file this for tracking (it sounds easy to check for RecursionError and
give up on the jsondiff comparator…).

-- 
regards,
                        Mattia Rizzolo

GPG Key: 66AE 2B4A FCCF 3F52 DA18  4D18 4B04 3FCD B944 4540      .''`.
more about me:  https://mapreri.org                             : :'  :
Launchpad user: https://launchpad.net/~mapreri                  `. `'`
Debian QA page: https://qa.debian.org/developer.php?login=mattia  `-
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/reproducible-builds/attachments/20180710/4a2eaf53/attachment.sig>


More information about the Reproducible-builds mailing list