Source: ruby-gnome Severity: normal Tags: bullseye sid During the libffi transition, we've encountered an autopkgtest regression in pygobject that might also indicate crashes on arm64 in other bindings that use GObject-Introspection and libffi. The libffi maintainer recommended that we add some versioned Depends/Breaks to force the right things to happen. To be safe, ruby-gnome should probably do the same.
The libffi6 -> libffi7 transition involves an ABI break on arm64, and GObject-Introspection exposes libffi data structures in its own API, which are used by bindings like pygobject and ruby-gnome. We've found that in practice, pygobject crashes on arm64 if either: (A) gobject-introspection is old (built against libffi6) and pygobject is new (built against libffi7), or (B) gobject-introspection is new (built against libffi7) and pygobject is old (built against libffi6) ruby-gnome seems to call into GObject-Introspection's libffi-related APIs, so it probably has a similar issue, replacing pygobject with ruby-gnome. To prevent broken partial upgrades, please make ruby-gnome Build-Depend on libgirepository1.0-dev (>= 1.62.0-4~) and libffi-dev (>= 3.3); this will result in a runtime dependency on libgirepository-1.0-0 (>= 1.62.0-4~) and libffi7, preventing (A). Then we can add a Breaks: ruby-gobject-introspection (<< x~) in libgirepository-1.0-0, where x is the version in which you made that change, to prevent (B). Thanks, smcv