Package: diffoscope Version: 99 Severity: normal How to reproduce: I used the versions of libjson-glib-1.0-0 in buster and sid (tests/data/test*.deb don't exhibit the problem). Note that
$ diffoscope libjson-glib-1.0-0_1.2.6-1_amd64.deb libjson- glib-1.0-0_1.4.2-4_amd64.deb works and the output looks very reasonable (compares the contained shared libs, even though they have different version!). Both deb's contain data.tar files compressed with xz. Now recompress data.tar in the first deb with gzip resulting in libjson-glib-1.0-0_1.2.6-1+gzipped-data-tar_amd64.deb. $ diffoscope libjson-glib-1.0-0_1.2.6-1+gzipped-data-tar_amd64.deb libjson- glib-1.0-0_1.2.6-1_amd64.deb works and shows --- libjson-glib-1.0-0_1.2.6-1+gzipped-data-tar_amd64.deb +++ libjson-glib-1.0-0_1.2.6-1_amd64.deb ├── file list │ @@ -1,3 +1,3 @@ │ -?rw-r--r-- 0 0 0 4 1970-01-01 00:00:00.000000 debian- binary │ -?rw-r--r-- 0 0 0 2074 1970-01-01 00:00:00.000000 control.tar.gz │ -?rw-r--r-- 0 0 0 187626 1970-01-01 00:00:00.000000 data.tar.gz │ +-rw-r--r-- 0 0 0 4 2017-03-16 19:01:26.000000 debian- binary │ +-rw-r--r-- 0 0 0 2074 2017-03-16 19:01:26.000000 control.tar.gz │ +-rw-r--r-- 0 0 0 175512 2017-03-16 19:01:26.000000 data.tar.xz │ --- data.tar.gz ├── +++ data.tar.xz │┄ Files similar despite different names (difference score: 0) │ ├── filetype from file(1) │ │ @@ -1 +1 @@ │ │ -gzip compressed data, was "data.tar", last modified: Wed Jul 11 08:52:12 2018, from Unix, original size 296960 │ │ +XZ compressed data │ ├── filetype from diffoscope │ │ @@ -1 +1 @@ │ │ -GzipFile │ │ +XzFile But this doesn't work: $ diffoscope libjson-glib-1.0-0_1.2.6-1+gzipped-data-tar_amd64.deb libjson- glib-1.0-0_1.4.2-4_amd64.deb Traceback (most recent call last): File "/build/work/diffoscope/diffoscope.git/diffoscope/main.py", line 460, in main sys.exit(run_diffoscope(parsed_args)) File "/build/work/diffoscope/diffoscope.git/diffoscope/main.py", line 432, in run_diffoscope difference = compare_root_paths(path1, path2) File "/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/compare.py", line 68, in compare_root_paths difference = compare_files(file1, file2) File "/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/compare.py", line 118, in compare_files return file1.compare(file2, source) File "/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/file.py", line 366, in compare difference = self._compare_using_details(other, source) File "/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/file.py", line 321, in _compare_using_details other.as_container, no_recurse=no_recurse)) File "/build/work/diffoscope/diffoscope.git/diffoscope/comparators/utils/container.py", line 158, in comparisons for my_name, other_name, score in self.perform_fuzzy_matching(my_members, other_members): File "/build/work/diffoscope/diffoscope.git/diffoscope/comparators/deb.py", line 94, in perform_fuzzy_matching for name1 in my_members.keys(): RuntimeError: OrderedDict mutated during iteration This is with diffoscope from git head. Cheers, Roderich -- System Information: Debian Release: buster/sid APT prefers unstable-debug APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental-debug'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.17.5 (SMP w/4 CPU cores) Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), LANGUAGE=en_US.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages diffoscope depends on: ii libpython3.6-stdlib 3.6.6-1 ii python3 3.6.6-1 ii python3-distro 1.0.1-2 ii python3-distutils 3.6.6-1 ii python3-libarchive-c 2.1-3.1 ii python3-magic 2:0.4.15-1 ii python3-pkg-resources 39.2.0-1 Versions of packages diffoscope recommends: pn abootimg <none> ii acl 2.2.52-3+b1 pn apktool <none> pn binutils-multiarch <none> ii bzip2 1.0.6-8.1 ii caca-utils 0.99.beta19-2+b3 ii colord 1.3.3-2 ii db-util 5.3.1 ii default-jdk [java-sdk] 2:1.10-67 ii default-jdk-headless 2:1.10-67 ii device-tree-compiler 1.4.6-1 pn docx2txt <none> ii e2fsprogs 1.44.3-1 pn enjarify <none> pn fontforge-extras <none> pn fp-utils <none> ii genisoimage 9:1.1.11-3+b2 ii gettext 0.19.8.1-6+b1 ii ghc 8.2.2-4 ii ghostscript 9.22~dfsg-2.1 ii giflib-tools 5.1.4-3 pn gnumeric <none> ii gnupg 2.2.8-3 ii imagemagick 8:6.9.10.2+dfsg-3 ii imagemagick-6.q16 [imagemagick] 8:6.9.10.2+dfsg-3 ii jsbeautifier 1.6.4-7 ii libarchive-tools 3.2.2-4 pn llvm <none> ii lz4 1.8.2-1 ii mono-utils 4.6.2.7+dfsg-2 pn odt2txt <none> pn oggvideotools <none> ii openjdk-10-jdk [java-sdk] 10.0.1+10-4 ii openjdk-11-jdk [java-sdk] 11~21-2 ii openssh-client 1:7.7p1-3 pn pgpdump <none> ii poppler-utils 0.63.0-2 pn procyon-decompiler <none> ii python3-argcomplete 1.8.1-1 pn python3-binwalk <none> ii python3-debian 0.1.32 ii python3-defusedxml 0.5.0-1 pn python3-guestfs <none> pn python3-jsondiff <none> pn python3-progressbar <none> pn python3-pyxattr <none> ii python3-tlsh 3.4.4+20151206-1+b4 pn r-base-core <none> ii rpm2cpio 4.14.1+dfsg1-3 pn sng <none> ii sqlite3 3.24.0-1 ii squashfs-tools 1:4.3-6 ii tcpdump 4.9.2-3 ii unzip 6.0-21 ii vim-common 2:8.1.0089-1 ii xmlbeans 2.6.0+dfsg-3 ii xxd 2:8.1.0089-1 ii xz-utils 5.2.2-1.3 Versions of packages diffoscope suggests: ii libjs-jquery 3.2.1-1 -- no debconf information