Hi tobi, Le 11/07/2023 à 16:52, Tobias Frost a écrit :
Hi Pierre, On Tue, Jul 11, 2023 at 04:10:49PM +0200, Pierre Gruet wrote:Dear Mentors, I maintain a package that builds a shared library. I uploaded a new upstream version of it to Debian, with no removed symbols, no ABI change... Fine.Unfortunately, it turns out fields were added to some class (of which size thus increased) in the shared library, so that binaries built against a previous version of it now segfault as they are not allocating enough space. Of course, rebuilding the reverse dependencies fixes the segfaults. How should we handle such situation in Debian? Quoting Policy 8.1: The SONAME and binary package name need not, and indeed normally should not, change if new interfaces are added but none are removed or changed, since this will not break binaries linked against the old shared library. Correct versioning of dependencies on the newer shared library by binaries that use the new interfaces is handled via the symbols or shlibs system. So my understanding is that no SONAME change and no transition are needed, although the rdeps indeed have to be rebuilt as their binaries _are_ broken by the new version of the library.In short: ABI change is not limited to removing symbols. Your library broke ABI by adding members, and would have required a SONAME bump. There is some guide what you can and cannot do in terms of ABI: https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C++
Thank you so much for your quick answer! I will read this.
There is a tool to check for breakage: https://lvc.github.io/abi-compliance-checker/ (it is in Debian: https://tracker.debian.org/pkg/abi-compliance-checker)
That's right, after seeing the segfaults I ran abi-compliance-checker and it correctly flagged the issue...
Thanks again for the explanation. Best regards, -- Pierre
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature