Bug 27726 - libceph_librbd_parent_cache.so.1.0.0 fails self check
Summary: libceph_librbd_parent_cache.so.1.0.0 fails self check
Status: RESOLVED WORKSFORME
Alias: None
Product: libabigail
Classification: Unclassified
Component: default (show other bugs)
Version: unspecified
: P1 normal
Target Milestone: ---
Assignee: Dodji Seketeli
URL:
Keywords:
Depends on:
Blocks: 27019
  Show dependency treegraph
 
Reported: 2021-04-13 19:58 UTC by Ben Woodard
Modified: 2021-06-08 22:06 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ben Woodard 2021-04-13 19:58:51 UTC
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
Comment 1 Ben Woodard 2021-04-13 20:41:11 UTC
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.
Comment 2 Ben Woodard 2021-04-13 21:04:26 UTC
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
Comment 3 Ben Woodard 2021-06-08 22:06:16 UTC
This problem seems to be resolved with the current trunk of libabigail.