Bug 27327 - types seem to get confused in libjavascriptcoregtk-4.0.so.18.17.12
Summary: types seem to get confused in libjavascriptcoregtk-4.0.so.18.17.12
Status: RESOLVED WORKSFORME
Alias: None
Product: libabigail
Classification: Unclassified
Component: default (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Dodji Seketeli
URL:
Keywords:
Depends on:
Blocks: 27019
  Show dependency treegraph
 
Reported: 2021-02-03 03:43 UTC by Ben Woodard
Modified: 2021-03-04 21:41 UTC (History)
1 user (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-02-03 03:43:53 UTC
With libabigail as of trunk: 271e3afa

The self check fails on  /lib64/libjavascriptcoregtk-4.0.so.18.17.12 from webkit2gtk3-jsc-2.30.4-1.fc33.x86_64

abidw --abidiff /lib64/libjavascriptcoregtk-4.0.so.18.17.12
Download failed: File exists.  Continuing without debug info for /home/ben/Shared/test/system-supplied DSO at 0x7ffff7fcf000.
[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 Inspector::InspectorConsoleAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)' at InspectorHeapAgent.cpp:53:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZN9Inspector18InspectorHeapAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE
     and it aliases symbols: _ZN9Inspector21InspectorConsoleAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector28InspectorScriptProfilerAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector21InspectorRuntimeAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector22InspectorDebuggerAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE
    'method virtual void Inspector::InspectorConsoleAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) {_ZN9Inspector18InspectorHeapAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector21InspectorConsoleAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector28InspectorScriptProfilerAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector21InspectorRuntimeAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector22InspectorDebuggerAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE}' now becomes 'method virtual void Inspector::InspectorHeapAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) {_ZN9Inspector18InspectorHeapAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector21InspectorConsoleAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector28InspectorScriptProfilerAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector21InspectorRuntimeAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE, _ZN9Inspector22InspectorDebuggerAgent27didCreateFrontendAndBackendEPNS_14FrontendRouterEPNS_17BackendDispatcherE}'
    implicit parameter 0 of type 'Inspector::InspectorConsoleAgent*' changed:
      in pointed to type 'class Inspector::InspectorConsoleAgent' at InspectorHeapAgent.h:45:1:
        type name changed from 'Inspector::InspectorConsoleAgent' to 'Inspector::InspectorHeapAgent'
        type size changed from 832 to 640 (in bits)
        1 base class deletion:
          class Inspector::ConsoleBackendDispatcherHandler at InspectorBackendDispatchers.h:176:1
        2 base class insertions:
          class Inspector::HeapBackendDispatcherHandler at InspectorBackendDispatchers.h:321:1
          class JSC::HeapObserver at HeapObserver.h:32:1
        11 member function deletions:
          'method virtual void Inspector::InspectorConsoleAgent::clearMessages(Inspector::ErrorString&)' at InspectorConsoleAgent.cpp:93:1, virtual at voffset 8/10
          'method virtual void Inspector::InspectorConsoleAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)' at InspectorConsoleAgent.cpp:50:1, virtual at voffset 2/10
          'method virtual void Inspector::InspectorConsoleAgent::disable(Inspector::ErrorString&)' at InspectorConsoleAgent.cpp:85:1, virtual at voffset 7/10
          'method virtual void Inspector::InspectorConsoleAgent::discardValues()' at InspectorConsoleAgent.cpp:60:1, virtual at voffset 4/10
          'method virtual void Inspector::InspectorConsoleAgent::enable(Inspector::ErrorString&)' at InspectorConsoleAgent.cpp:66:1, virtual at voffset 6/10
          'method virtual void Inspector::InspectorConsoleAgent::getLoggingChannels(Inspector::ErrorString&, WTF::RefPtr<WTF::JSONImpl::ArrayOf<Inspector::Protocol::Console::Channel>, WTF::DumbPtrTraits<WTF::JSONImpl::ArrayOf<Inspector::Protocol::Console::Channel> > >&)' at InspectorConsoleAgent.cpp:259:1, virtual at voffset 9/10
          'method virtual void Inspector::InspectorConsoleAgent::setLoggingChannelLevel(Inspector::ErrorString&, const WTF::String&, const WTF::String&)' at InspectorConsoleAgent.cpp:265:1, virtual at voffset 10/10
          'method virtual void Inspector::InspectorConsoleAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)' at InspectorConsoleAgent.cpp:54:1, virtual at voffset 3/10
          'method virtual Inspector::InspectorConsoleAgent::~InspectorConsoleAgent(int)' at InspectorConsoleAgent.cpp:48:1
          'method virtual Inspector::InspectorConsoleAgent::~InspectorConsoleAgent(int)' at InspectorConsoleAgent.cpp:48:1
          'method virtual Inspector::InspectorConsoleAgent::~InspectorConsoleAgent(int)' at InspectorConsoleAgent.cpp:48:1
        16 member function insertions:
          'method virtual void Inspector::InspectorHeapAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)' at InspectorHeapAgent.cpp:53:1, virtual at voffset 2/16
          'method virtual void Inspector::InspectorHeapAgent::didGarbageCollect(JSC::CollectionScope)' at InspectorHeapAgent.cpp:279:1, virtual at voffset 15/16
          'method virtual void Inspector::InspectorHeapAgent::disable(Inspector::ErrorString&)' at InspectorHeapAgent.cpp:75:1, virtual at voffset 7/16
          'method virtual void Inspector::InspectorHeapAgent::dispatchGarbageCollectedEvent(Inspector::Protocol::Heap::GarbageCollection::Type, WTF::Seconds, WTF::Seconds)' at InspectorHeapAgent.cpp:310:1, virtual at voffset 16/16
          'method virtual void Inspector::InspectorHeapAgent::enable(Inspector::ErrorString&)' at InspectorHeapAgent.cpp:63:1, virtual at voffset 6/16
          'method virtual void Inspector::InspectorHeapAgent::gc(Inspector::ErrorString&)' at InspectorHeapAgent.cpp:90:1, virtual at voffset 8/16
          'method virtual void Inspector::InspectorHeapAgent::getPreview(Inspector::ErrorString&, int, WTF::Optional<WTF::String>&, WTF::RefPtr<Inspector::Protocol::Debugger::FunctionDetails, WTF::DumbPtrTraits<Inspector::Protocol::Debugger::FunctionDetails> >&, WTF::RefPtr<Inspector::Protocol::Runtime::ObjectPreview, WTF::DumbPtrTraits<Inspector::Protocol::Runtime::ObjectPreview> >&)' at InspectorHeapAgent.cpp:169:1, virtual at voffset 12/16
          'method virtual void Inspector::InspectorHeapAgent::getRemoteObject(Inspector::ErrorString&, int, const WTF::String*, WTF::RefPtr<Inspector::Protocol::Runtime::RemoteObject, WTF::DumbPtrTraits<Inspector::Protocol::Runtime::RemoteObject> >&)' at InspectorHeapAgent.cpp:224:1, virtual at voffset 13/16
          'method virtual void Inspector::InspectorHeapAgent::snapshot(Inspector::ErrorString&, double*, WTF::String*)' at InspectorHeapAgent.cpp:98:1, virtual at voffset 9/16
          'method virtual void Inspector::InspectorHeapAgent::startTracking(Inspector::ErrorString&)' at InspectorHeapAgent.cpp:118:1, virtual at voffset 10/16
          'method virtual void Inspector::InspectorHeapAgent::stopTracking(Inspector::ErrorString&)' at InspectorHeapAgent.cpp:132:1, virtual at voffset 11/16
          'method virtual void Inspector::InspectorHeapAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)' at InspectorHeapAgent.cpp:57:1, virtual at voffset 3/16
          'method virtual void Inspector::InspectorHeapAgent::willGarbageCollect()' at InspectorHeapAgent.cpp:271:1, virtual at voffset 14/16
          'method virtual Inspector::InspectorHeapAgent::~InspectorHeapAgent(int)' at InspectorHeapAgent.cpp:51:1
          'method virtual Inspector::InspectorHeapAgent::~InspectorHeapAgent(int)' at InspectorHeapAgent.cpp:51:1
          'method virtual Inspector::InspectorHeapAgent::~InspectorHeapAgent(int)' at InspectorHeapAgent.cpp:51:1
        3 data member deletions:
          'Inspector::InspectorHeapAgent* Inspector::InspectorConsoleAgent::m_heapAgent', at offset 384 (in bits) at InspectorConsoleAgent.h:91:1
          'WTF::HashMap<WTF::String, unsigned int, WTF::DefaultHash<WTF::String>, WTF::HashTraits<WTF::String>, WTF::HashTraits<unsigned int> > Inspector::InspectorConsoleAgent::m_counts', at offset 640 (in bits) at InspectorConsoleAgent.h:95:1
          'WTF::HashMap<WTF::String, WTF::MonotonicTime, WTF::DefaultHash<WTF::String>, WTF::HashTraits<WTF::String>, WTF::HashTraits<WTF::MonotonicTime> > Inspector::InspectorConsoleAgent::m_times', at offset 704 (in bits) at InspectorConsoleAgent.h:96:1
        1 data member insertion:
          'bool Inspector::InspectorHeapAgent::m_tracking', at offset 520 (in bits) at InspectorHeapAgent.h:84:1
        6 data member changes:
          type of 'WTF::Vector<std::unique_ptr<Inspector::ConsoleMessage, std::default_delete<Inspector::ConsoleMessage> >, 0, WTF::CrashOnOverflow, 16, WTF::FastMalloc> Inspector::InspectorConsoleAgent::m_consoleMessages' changed:
            entity changed from 'class WTF::Vector<std::unique_ptr<Inspector::ConsoleMessage, std::default_delete<Inspector::ConsoleMessage> >, 0, WTF::CrashOnOverflow, 16, WTF::FastMalloc>' to 'Inspector::InspectorEnvironment&'
            type size changed from 128 to 64 (in bits)
          and name of 'Inspector::InspectorConsoleAgent::m_consoleMessages' changed to 'Inspector::InspectorHeapAgent::m_environment' at InspectorHeapAgent.h:81:1
          type of 'int Inspector::InspectorConsoleAgent::m_expiredConsoleMessageCount' changed:
            entity changed from 'int' to 'class WTF::Seconds' at Seconds.h:39:1
            type size changed from 32 to 64 (in bits)
          and name of 'Inspector::InspectorConsoleAgent::m_expiredConsoleMessageCount' changed to 'Inspector::InspectorHeapAgent::m_gcStartTime' at InspectorHeapAgent.h:85:1
          'Inspector::InjectedScriptManager& Inspector::InspectorConsoleAgent::m_injectedScriptManager' offset changed from 192 to 256 (in bits) (by +64 bits)
          type of 'std::unique_ptr<Inspector::ConsoleFrontendDispatcher, std::default_delete<Inspector::ConsoleFrontendDispatcher> > Inspector::InspectorConsoleAgent::m_frontendDispatcher' changed:
            type name changed from 'std::unique_ptr<Inspector::ConsoleFrontendDispatcher, std::default_delete<Inspector::ConsoleFrontendDispatcher> >' to 'std::unique_ptr<Inspector::HeapFrontendDispatcher, std::default_delete<Inspector::HeapFrontendDispatcher> >'
            type size hasn't changed
            1 data member change:
              type of 'std::__uniq_ptr_data<Inspector::ConsoleFrontendDispatcher, std::default_delete<Inspector::ConsoleFrontendDispatcher>, true, true> std::unique_ptr<Inspector::ConsoleFrontendDispatcher, std::default_delete<Inspector::ConsoleFrontendDispatcher> >::_M_t' changed:
                type name changed from 'std::__uniq_ptr_data<Inspector::ConsoleFrontendDispatcher, std::default_delete<Inspector::ConsoleFrontendDispatcher>, true, true>' to 'std::__uniq_ptr_data<Inspector::HeapFrontendDispatcher, std::default_delete<Inspector::HeapFrontendDispatcher>, true, true>'
                type size hasn't changed
                1 base class deletion:
                  class std::__uniq_ptr_impl<Inspector::ConsoleFrontendDispatcher, std::default_delete<Inspector::ConsoleFrontendDispatcher> > at unique_ptr.h:128:1
                1 base class insertion:
                  class std::__uniq_ptr_impl<Inspector::HeapFrontendDispatcher, std::default_delete<Inspector::HeapFrontendDispatcher> > at unique_ptr.h:128:1
              and name of 'std::unique_ptr<Inspector::ConsoleFrontendDispatcher, std::default_delete<Inspector::ConsoleFrontendDispatcher> >::_M_t' changed to 'std::unique_ptr<Inspector::HeapFrontendDispatcher, std::default_delete<Inspector::HeapFrontendDispatcher> >::_M_t' at unique_ptr.h:248:1
          and name of 'Inspector::InspectorConsoleAgent::m_frontendDispatcher' changed to 'Inspector::InspectorHeapAgent::m_frontendDispatcher' at InspectorHeapAgent.h:79:1, offset changed from 256 to 320 (in bits) (by +64 bits)
          type of 'WTF::RefPtr<Inspector::ConsoleBackendDispatcher, WTF::DumbPtrTraits<Inspector::ConsoleBackendDispatcher> > Inspector::InspectorConsoleAgent::m_backendDispatcher' changed:
            type name changed from 'WTF::RefPtr<Inspector::ConsoleBackendDispatcher, WTF::DumbPtrTraits<Inspector::ConsoleBackendDispatcher> >' to 'WTF::RefPtr<Inspector::HeapBackendDispatcher, WTF::DumbPtrTraits<Inspector::HeapBackendDispatcher> >'
            type size hasn't changed
            1 data member change:
              type of 'WTF::DumbPtrTraits<Inspector::ConsoleBackendDispatcher>::StorageType WTF::RefPtr<Inspector::ConsoleBackendDispatcher, WTF::DumbPtrTraits<Inspector::ConsoleBackendDispatcher> >::m_ptr' changed:
                typedef name changed from WTF::DumbPtrTraits<Inspector::ConsoleBackendDispatcher>::StorageType to WTF::DumbPtrTraits<Inspector::HeapBackendDispatcher>::StorageType at DumbPtrTraits.h:37:1
                underlying type 'Inspector::ConsoleBackendDispatcher*' changed:
                  in pointed to type 'class Inspector::ConsoleBackendDispatcher' at InspectorBackendDispatchers.h:902:1:
                    type name changed from 'Inspector::ConsoleBackendDispatcher' to 'Inspector::HeapBackendDispatcher'
                    type size hasn't changed
                    1 member function deletion:
                      'method virtual void Inspector::ConsoleBackendDispatcher::dispatch(long int, const WTF::String&, WTF::Ref<WTF::JSONImpl::Object, WTF::DumbPtrTraits<WTF::JSONImpl::Object> >&&)' at InspectorBackendDispatchers.cpp:1602:1, virtual at voffset 2/2
                    1 member function insertion:
                      'method virtual void Inspector::HeapBackendDispatcher::dispatch(long int, const WTF::String&, WTF::Ref<WTF::JSONImpl::Object, WTF::DumbPtrTraits<WTF::JSONImpl::Object> >&&)' at InspectorBackendDispatchers.cpp:4295:1, virtual at voffset 2/2
                    1 data member change:
                      type of 'Inspector::ConsoleBackendDispatcherHandler* Inspector::ConsoleBackendDispatcher::m_agent' changed:
                        in pointed to type 'class Inspector::ConsoleBackendDispatcherHandler' at InspectorBackendDispatchers.h:321:1:
                          type name changed from 'Inspector::ConsoleBackendDispatcherHandler' to 'Inspector::HeapBackendDispatcherHandler'
                          type size hasn't changed
                          8 member function deletions:
                            'method virtual void Inspector::ConsoleBackendDispatcherHandler::clearMessages(Inspector::ErrorString&)' at InspectorBackendDispatchers.h:180:1, virtual at voffset 2/4
                            'method virtual void Inspector::ConsoleBackendDispatcherHandler::disable(Inspector::ErrorString&)' at InspectorBackendDispatchers.h:179:1, virtual at voffset 1/4
                            'method virtual void Inspector::ConsoleBackendDispatcherHandler::enable(Inspector::ErrorString&)' at InspectorBackendDispatchers.h:178:1, virtual at voffset 0/4
                            'method virtual void Inspector::ConsoleBackendDispatcherHandler::getLoggingChannels(Inspector::ErrorString&, WTF::RefPtr<WTF::JSONImpl::ArrayOf<Inspector::Protocol::Console::Channel>, WTF::DumbPtrTraits<WTF::JSONImpl::ArrayOf<Inspector::Protocol::Console::Channel> > >&)' at InspectorBackendDispatchers.h:181:1, virtual at voffset 3/4
                            'method virtual void Inspector::ConsoleBackendDispatcherHandler::setLoggingChannelLevel(Inspector::ErrorString&, const WTF::String&, const WTF::String&)' at InspectorBackendDispatchers.h:182:1, virtual at voffset 4/4
                            'method virtual Inspector::ConsoleBackendDispatcherHandler::~ConsoleBackendDispatcherHandler(int)' at InspectorBackendDispatchers.cpp:53:1
                            'method virtual Inspector::ConsoleBackendDispatcherHandler::~ConsoleBackendDispatcherHandler(int)' at InspectorBackendDispatchers.cpp:53:1
                            'method virtual void Inspector::HeapBackendDispatcherHandler::disable(Inspector::ErrorString&)' at InspectorBackendDispatchers.h:324:1, virtual at voffset 1/7
                            'method virtual void Inspector::HeapBackendDispatcherHandler::enable(Inspector::ErrorString&)' at InspectorBackendDispatchers.h:323:1, virtual at voffset 0/7
                            'method virtual void Inspector::HeapBackendDispatcherHandler::gc(Inspector::ErrorString&)' at InspectorBackendDispatchers.h:325:1, virtual at voffset 2/7
                            'method virtual void Inspector::HeapBackendDispatcherHandler::getPreview(Inspector::ErrorString&, int, WTF::Optional<WTF::String>&, WTF::RefPtr<Inspector::Protocol::Debugger::FunctionDetails, WTF::DumbPtrTraits<Inspector::Protocol::Debugger::FunctionDetails> >&, WTF::RefPtr<Inspector::Protocol::Runtime::ObjectPreview, WTF::DumbPtrTraits<Inspector::Protocol::Runtime::ObjectPreview> >&)' at InspectorBackendDispatchers.h:329:1, virtual at voffset 6/7
                            'method virtual void Inspector::HeapBackendDispatcherHandler::getRemoteObject(Inspector::ErrorString&, int, const WTF::String*, WTF::RefPtr<Inspector::Protocol::Runtime::RemoteObject, WTF::DumbPtrTraits<Inspector::Protocol::Runtime::RemoteObject> >&)' at InspectorBackendDispatchers.h:330:1, virtual at voffset 7/7
                            'method virtual void Inspector::HeapBackendDispatcherHandler::snapshot(Inspector::ErrorString&, double*, WTF::String*)' at InspectorBackendDispatchers.h:326:1, virtual at voffset 3/7
                            'method virtual void Inspector::HeapBackendDispatcherHandler::startTracking(Inspector::ErrorString&)' at InspectorBackendDispatchers.h:327:1, virtual at voffset 4/7
                            'method virtual void Inspector::HeapBackendDispatcherHandler::stopTracking(Inspector::ErrorString&)' at InspectorBackendDispatchers.h:328:1, virtual at voffset 5/7
                            'method virtual Inspector::HeapBackendDispatcherHandler::~HeapBackendDispatcherHandler(int)' at InspectorBackendDispatchers.cpp:59:1
                            'method virtual Inspector::HeapBackendDispatcherHandler::~HeapBackendDispatcherHandler(int)' at InspectorBackendDispatchers.cpp:59:1
                            'method virtual Inspector::HeapBackendDispatcherHandler::~HeapBackendDispatcherHandler(int)' at InspectorBackendDispatchers.cpp:59:1
                      and name of 'Inspector::ConsoleBackendDispatcher::m_agent' changed to 'Inspector::HeapBackendDispatcher::m_agent' at InspectorBackendDispatchers.h:923:1
              and name of 'WTF::RefPtr<Inspector::ConsoleBackendDispatcher, WTF::DumbPtrTraits<Inspector::ConsoleBackendDispatcher> >::m_ptr' changed to 'WTF::RefPtr<Inspector::HeapBackendDispatcher, WTF::DumbPtrTraits<Inspector::HeapBackendDispatcher> >::m_ptr' at RefPtr.h:112:1
          and name of 'Inspector::InspectorConsoleAgent::m_backendDispatcher' changed to 'Inspector::InspectorHeapAgent::m_backendDispatcher' at InspectorHeapAgent.h:80:1, offset changed from 320 to 384 (in bits) (by +64 bits)
          'bool Inspector::InspectorConsoleAgent::m_enabled' offset changed from 768 to 512 (in bits) (by -256 bits)

[Inferior 1 (process 603340) exited with code 01]

At the root of the problem it seems like two classes are getting confused:
type name changed from 'Inspector::InspectorConsoleAgent' to 'Inspector::InspectorHeapAgent'
type size changed from 832 to 640 (in bits)

It seems like most things come from that original problem.
Comment 1 Ben Woodard 2021-02-03 03:52:27 UTC
It may be that the thing that is going wrong is earlier where the ELF symbols are being aliased. There is another thing that my testing kicks out which is somewhat similar:

/home/ben/Shared/Work/test/libabigail-x86_64/bin/abidw --abidiff /lib64/libstdc++.so.6.0.28
Download failed: File exists.  Continuing without debug info for /home/ben/Shared/test/system-supplied DSO at 0x7ffff7fcf000.
[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 int std::codecvt<char16_t, char, __mbstate_t>::do_max_length() const' at codecvt.h:573:1 has some indirect sub-type changes:
    Please note that the symbol of this function is _ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21
     and it aliases symbols: _ZNKSt7codecvtIDsDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26, _ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21, _ZNKSt7codecvtIDiDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26
    'method virtual int std::codecvt<char16_t, char, __mbstate_t>::do_max_length() const {_ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21, _ZNKSt7codecvtIDsDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26, _ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21, _ZNKSt7codecvtIDiDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26}' now becomes 'method virtual int std::codecvt<char32_t, char, __mbstate_t>::do_max_length() const {_ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21, _ZNKSt7codecvtIDsDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26, _ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21, _ZNKSt7codecvtIDiDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26}'
    implicit parameter 0 of type 'const std::codecvt<char16_t, char, __mbstate_t>*' changed:
      in pointed to type 'const std::codecvt<char16_t, char, __mbstate_t>':
        'const std::codecvt<char16_t, char, __mbstate_t>' changed to 'const std::codecvt<char32_t, char, __mbstate_t>'

[Inferior 1 (process 603341) exited with code 01]

There it is swapping a 32b function and a 16b function.

that was with libstdc++-10.2.1-9.fc33.x86_64 /lib64/libstdc++.so.6.0.28

Might be the same bug might be different hard to say but in this case I think that they are the same.
Comment 2 Ben Woodard 2021-03-04 20:15:02 UTC
Another one that looks like type names are getting swapped is  /usr/lib64/ceph/librbd/libceph_librbd_parent_cache.so.1.0.0 librbd1-16.1.0-0.4.snapshot.fc34.x86_64

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]

This was with trunk as of 8ae8dcb8d5b87dafd0b9fdd716654e4bf3284c95
Comment 3 Ben Woodard 2021-03-04 21:41:11 UTC
This seems to work now with the latest released libabigail 1.8.2 and so I will close this bug as works for me and move similar issues which may or may not be related to their own bug.