With libabigail as of: b215a2115376225b04b4d6b25acc6c5a1b4021e9 /usr/lib64/ceph/librbd/libceph_librbd_parent_cache.so.1.0.0 from librbd1-16.2.0-2.fc34.x86_64 fails self check /home/ben/Shared/Work/test/libabigail-x86_64/bin/abidw --abidiff /usr/lib64/ceph/librbd/libceph_librbd_parent_cache.so.1.0.0 Reading symbols from abidw... Starting program: /home/ben/Shared/Work/test/libabigail-x86_64/bin/abidw --abidiff /usr/lib64/ceph/librbd/libceph_librbd_parent_cache.so.1.0.0 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". Functions changes summary: 0 Removed, 1 Changed, 0 Added function Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 function with some indirect sub-type change: [C] 'method virtual void ceph::immutable_obj_cache::ObjectCacheRegReplyData::decode_payload(ceph::buffer::v15_2_0::list::const_iterator, __u8)' at Types.cc:139:1 has some indirect sub-type changes: Please note that the symbol of this function is _ZN4ceph19immutable_obj_cache24ObjectCacheReadRadosData14decode_payloadENS_6buffer7v15_2_04list13iterator_implILb1EEEh and it aliases symbol: _ZN4ceph19immutable_obj_cache23ObjectCacheRegReplyData14decode_payloadENS_6buffer7v15_2_04list13iterator_implILb1EEEh 'method virtual void ceph::immutable_obj_cache::ObjectCacheRegReplyData::decode_payload(ceph::buffer::v15_2_0::list::const_iterator, __u8) {_ZN4ceph19immutable_obj_cache24ObjectCacheReadRadosData14decode_payloadENS_6buffer7v15_2_04list13iterator_implILb1EEEh, _ZN4ceph19immutable_obj_cache23ObjectCacheRegReplyData14decode_payloadENS_6buffer7v15_2_04list13iterator_implILb1EEEh}' now becomes 'method virtual void ceph::immutable_obj_cache::ObjectCacheReadRadosData::decode_payload(ceph::buffer::v15_2_0::list::const_iterator, __u8) {_ZN4ceph19immutable_obj_cache24ObjectCacheReadRadosData14decode_payloadENS_6buffer7v15_2_04list13iterator_implILb1EEEh, _ZN4ceph19immutable_obj_cache23ObjectCacheRegReplyData14decode_payloadENS_6buffer7v15_2_04list13iterator_implILb1EEEh}' implicit parameter 0 of type 'ceph::immutable_obj_cache::ObjectCacheRegReplyData*' changed: in pointed to type 'class ceph::immutable_obj_cache::ObjectCacheRegReplyData' at Types.h:120:1: type name changed from 'ceph::immutable_obj_cache::ObjectCacheRegReplyData' to 'ceph::immutable_obj_cache::ObjectCacheReadRadosData' type size hasn't changed 7 member function deletions: 'method virtual void ceph::immutable_obj_cache::ObjectCacheRegReplyData::decode_payload(ceph::buffer::v15_2_0::list::const_iterator, __u8)' at Types.cc:71:1, virtual at voffset 3/5 'method virtual void ceph::immutable_obj_cache::ObjectCacheRegReplyData::encode_payload()' at Types.cc:69:1, virtual at voffset 2/5 'method virtual uint16_t ceph::immutable_obj_cache::ObjectCacheRegReplyData::get_request_type()' at Types.h:81:1, virtual at voffset 4/5 'method virtual bool ceph::immutable_obj_cache::ObjectCacheRegReplyData::payload_empty()' at Types.h:82:1, virtual at voffset 5/5 'method virtual ceph::immutable_obj_cache::ObjectCacheRegReplyData::~ObjectCacheRegReplyData(int)' at Types.cc:67:1 'method virtual ceph::immutable_obj_cache::ObjectCacheRegReplyData::~ObjectCacheRegReplyData(int)' at Types.cc:67:1 'method virtual ceph::immutable_obj_cache::ObjectCacheRegReplyData::~ObjectCacheRegReplyData(int)' at Types.cc:67:1 7 member function insertions: 'method virtual void ceph::immutable_obj_cache::ObjectCacheReadRadosData::decode_payload(ceph::buffer::v15_2_0::list::const_iterator, __u8)' at Types.cc:139:1, virtual at voffset 3/5 'method virtual void ceph::immutable_obj_cache::ObjectCacheReadRadosData::encode_payload()' at Types.cc:137:1, virtual at voffset 2/5 'method virtual uint16_t ceph::immutable_obj_cache::ObjectCacheReadRadosData::get_request_type()' at Types.h:128:1, virtual at voffset 4/5 'method virtual bool ceph::immutable_obj_cache::ObjectCacheReadRadosData::payload_empty()' at Types.h:129:1, virtual at voffset 5/5 'method virtual ceph::immutable_obj_cache::ObjectCacheReadRadosData::~ObjectCacheReadRadosData(int)' at Types.cc:135:1 'method virtual ceph::immutable_obj_cache::ObjectCacheReadRadosData::~ObjectCacheReadRadosData(int)' at Types.cc:135:1 'method virtual ceph::immutable_obj_cache::ObjectCacheReadRadosData::~ObjectCacheReadRadosData(int)' at Types.cc:135:1 [Inferior 1 (process 22180) exited with code 01] No stack. The weird thing with this one is if you look at it, it seems like it thinks that the definitions are the same but the location 'method virtual void ceph::immutable_obj_cache::ObjectCacheRegReplyData::decode_payload(ceph::buffer::v15_2_0::list::const_iterator, __u8)' at Types.cc:71:1, virtual at voffset 3/5 'method virtual void ceph::immutable_obj_cache::ObjectCacheReadRadosData::decode_payload(ceph::buffer::v15_2_0::list::const_iterator, __u8)' at Types.cc:139:1, virtual at voffset 3/5
Another one to look at is /usr/lib64/libprotobuf.so.25.0.0 from protobuf-3.14.0-3.fc34.x86_64 the short summary is: Functions changes summary: 0 Removed, 95 Changed, 0 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 95 functions with some indirect sub-type change: Then pages and pages of output that seem to have vtable changes at their root.
This vtable problem also seems to cause problems with /usr/lib64/libstdc++.so.6.0.29 from libstdc++-11.0.1-0.4.fc34.x86_64
This problem seems to be resolved with the current trunk of libabigail.