** Description changed: + **NOTE: This ticket has been moved/altered. Original problem referred to + rsync behaviour with libxxhash0. New subject is the changed ABI of + libxxhash0.** + + Original-Subject: rsync 3.2.x in Groovy depends on broken libxxhash + 0.7.x + + Actual problem: libxxhash0 in Focal exposes 128-bit xxhash (xxh128) + symbols which behave differently on versions of libxxhash0 in Groovy and + above. + + In xxhash 0.7.x there is this notice: + + https://github.com/Cyan4973/xxHash/blob/173e50be0509c6fb6c1bb74d95049ef61d7fdced/xxhash.h#L465-L476 + + > The XXH3 algorithm is still in development. + > The results it produces may still change in future versions. + > + > Results produced by v0.7.x are not comparable with results + > from v0.7.y. However, the API is completely stable, and it + > can safely be used for ephemeral data (local sessions). + > + > Avoid storing values in long-term storage until the + > algorithm is finalized. XXH3's return values will be + > officially finalized upon reaching v0.8.0. + + Unfortunately these ended up as usable symbols in xxhash 0.7.x in + Debian: + + > XXH128@Base 0.7.0 + (etc..) + + This means that those linking against libxxhash0 would get a binary + dependency on 0.7.0. But behaviour of xxh128 differs between 0.7 and + 0.8. So if you're linking against xxh128 from 0.8.x, it should binary- + depend on >=0.8 and not >=0.7. (And if possible, you should not use + xxh128 at all in 0.7.x.) + + The following Debian changeset fixes this for newer libxxhash0 builds: + + https://github.com/norbusan/debian- + xxhash/commit/b51053c86952dd13573b08344101172c88de847f + + > debian/libxxhash0.symbols + > - XXH128@Base 0.7.0 + > + XXH128@Base 0.8.0 + + But, this is not fully resolved until: + + - that Debian change lands in libxxhash0 in Ubuntu; + - packages linking against libxxhash0 (e.g. rsync) are rebuilt against this newer package, so the Depends is bumped to >=0.8; + - xxh128 in libxxhash0 in Focal is clearly marked as ephemeral (or removed altogether; this applies to xxh128 symbols libxxhash0 and an `xxh128sum` binary in the xxhash package) + + Cheers, + Walter Doekes + OSSO B.V. + + + ---vvv--- Original ticket below ---vvv--- + + **Problem** - $ rsync root@focal-system:/etc/.pwd.lock . - ERROR: .pwd.lock failed verification -- update discarded. - rsync error: some files/attrs were not transferred (see previous errors) - (code 23) at main.c(1816) [generator=3.2.3] + $ rsync root@focal-system:/etc/.pwd.lock . + ERROR: .pwd.lock failed verification -- update discarded. + rsync error: some files/attrs were not transferred + (see previous errors) + (code 23) at main.c(1816) [generator=3.2.3] - - $ rsync root@focal-system:/etc/.pwd.lock . --debug=all - opening connection using: ssh -l root focal-system rsync --server --sender \ - -e.LsfxCIvu . /etc/.pwd.lock (10 args) - (Client) Protocol versions: remote=31, negotiated=31 - Client negotiated checksum: xxh128 - ... - + $ rsync root@focal-system:/etc/.pwd.lock . --debug=all + opening connection using: ssh -l root focal-system rsync \ + --server --sender \ + -e.LsfxCIvu . /etc/.pwd.lock (10 args) + (Client) Protocol versions: remote=31, negotiated=31 + Client negotiated checksum: xxh128 + ... **Cause** - focal-system# dpkg -l | grep -E 'libxxhash|rsync' - ii libxxhash0:amd64 0.7.3-1 amd64 - ii rsync 3.2.3-2ubuntu1 amd64 - + focal-system# dpkg -l | grep -E 'libxxhash|rsync' + ii libxxhash0:amd64 0.7.3-1 amd64 + ii rsync 3.2.3-2ubuntu1 amd64 **Why this affects only us and not more people?** On Ubuntu/Focal, there is no rsync 3.2.3, only 3.1.3-8. But because we need the lz4 compression support we've fetched a newer rsync (from Groovy). However: the rsync 3.2.3 depends on libxxhash0 0.7.1+, while in fact it needs 0.8+. + **Details** - **Details** - - On a Ubuntu/Focal system we have installed a rsync 3.2.3 package from Ubuntu/Groovy because we need the lz4 compression support. - + On a Ubuntu/Focal system we have installed a rsync 3.2.3 package from + Ubuntu/Groovy because we need the lz4 compression support. focal-system# apt-cache show rsync Package: rsync ... Version: 3.2.3-2ubuntu1 Depends: lsb-base, libacl1 (>= 2.2.23), libc6 (>= 2.15), - liblz4-1 (>= 0.0~r130), libpopt0 (>= 1.14), libssl1.1 (>= 1.1.0), - libxxhash0 (>= 0.7.1), libzstd1 (>= 1.3.8), zlib1g (>= 1:1.1.4) + liblz4-1 (>= 0.0~r130), libpopt0 (>= 1.14), libssl1.1 (>= 1.1.0), + libxxhash0 (>= 0.7.1), libzstd1 (>= 1.3.8), zlib1g (>= 1:1.1.4) ... - Alongside this we had libxxhash0 0.7.3-1 from Focal: focal-system# apt-cache policy libxxhash0 libxxhash0: - Installed: 0.7.3-1 - Candidate: 0.7.3-1 - Version table: - *** 0.7.3-1 500 - 500 http://ARCHIVE/ubuntu focal/universe amd64 Packages - 100 /var/lib/dpkg/status - + Installed: 0.7.3-1 + Candidate: 0.7.3-1 + Version table: + *** 0.7.3-1 500 + 500 http://ARCHIVE/ubuntu focal/universe amd64 Packages + 100 /var/lib/dpkg/status According to the dependencies, this should work. But the combination does not, as this quote from the rsync maintainer would tell you: https://github.com/WayneD/rsync/issues/122#issuecomment-737690913 > Yeah, Cyan4973 could have told you that the 128-bit xxhash only > just stabilized in its 0.8.0 release, so anything older than > that isn't compatible. - **The fix** As the maintainer points out, version 0.7 is not stable (= broken for our intents and purposes) and thus not fit for use with rsync 3.2. I would argue that it's a good idea to bump the dependency of rsync 3.2.3 on Groovy to libxxhash0>=0.8 After all, in Groovy there is a libxxhash0 0.8.0-1ubuntu1.20.10.1, so that would not be a problem. And it would fix issues for those mixing and matching packages. - Thanks! Walter Doekes OSSO B.V. - (*) possible patch: $ diff -pu debian/control{.orig,} --- debian/control.orig 2021-07-08 09:56:57.646861644 +0200 +++ debian/control 2021-07-08 09:57:38.499029903 +0200 @@ -8,7 +8,7 @@ Build-Depends: debhelper-compat (= 13), - libacl1-dev, - libpopt-dev, - liblz4-dev, + libacl1-dev, + libpopt-dev, + liblz4-dev, - libxxhash-dev, + libxxhash-dev (>= 0.8), - libzstd-dev, - zlib1g-dev, - libssl-dev + libzstd-dev, + zlib1g-dev, + libssl-dev
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1934992 Title: rsync 3.2.x in Groovy depends on broken libxxhash 0.7.x To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/xxhash/+bug/1934992/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs