Bug 28450 - assert in finish_member_function_reading abg-dwarf-reader.cc:11663
Summary: assert in finish_member_function_reading abg-dwarf-reader.cc:11663
Status: RESOLVED FIXED
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-10-13 21:02 UTC by Ben Woodard
Modified: 2021-11-12 17:42 UTC (History)
1 user (show)

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


Attachments
compressed library that caused the assert. (3.99 MB, application/x-gzip)
2021-10-13 21:02 UTC, Ben Woodard
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ben Woodard 2021-10-13 21:02:55 UTC
Created attachment 13720 [details]
compressed library that caused the assert.

This is with the current trunk as of: c00add2a211d7d6a380ce5a248accca978975933

abidw --abidiff /home/ben/Shared/Work/spack/opt/spack/linux-fedora34-skylake/gcc-11.2.1/trilinos-13.0.1-sdmgk622poalvyr77rod5ygx3p25yhyx/lib/libepetra.so.13.0
<snip>
abidw: ../../../libabigail/src/abg-dwarf-reader.cc:11663: void abigail::dwarf_reader::finish_member_function_reading(Dwarf_Die*, const function_decl_sptr&, abigail::ir::class_or_union_sptr, abigail::dwarf_reader::read_context&): Assertion `__abg_cond__' failed.

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
Downloading source file /usr/src/debug/glibc-2.33-20.fc34.x86_64/signal/../sysdeps/unix/sysv/linux/raise.c...
49	  return ret;
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007ffff75148a4 in __GI_abort () at abort.c:79
#2  0x00007ffff7514789 in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>, file=<optimized out>, line=<optimized out>, function=<optimized out>) at assert.c:92
#3  0x00007ffff7523a16 in __GI___assert_fail (assertion=0x7ffff7f34e15 "__abg_cond__", file=0x7ffff7f49310 "../../../libabigail/src/abg-dwarf-reader.cc", line=11663, function=0x7ffff7f4bc60 "void abigail::dwarf_reader::finish_member_function_reading(Dwarf_Die*, const function_decl_sptr&, abigail::ir::class_or_union_sptr, abigail::dwarf_reader::read_context&)") at assert.c:101
#4  0x00007ffff7ec96b2 in abigail::dwarf_reader::finish_member_function_reading (die=0x7fffffffc300, f=std::shared_ptr<abigail::ir::function_decl> (use count 3, weak count 0) = {...}, klass=std::shared_ptr<abigail::ir::class_or_union> (use count 2, weak count 0) = {...}, ctxt=...) at ../../../libabigail/src/abg-dwarf-reader.cc:11663
#5  0x00007ffff7edb776 in abigail::dwarf_reader::build_ir_node_from_die (ctxt=..., die=0x7fffffffc300, scope=<optimized out>, called_from_public_decl=<optimized out>, where_offset=910651, is_declaration_only=false, is_required_decl_spec=false) at ../../../libabigail/src/abg-dwarf-reader.cc:15219
#6  0x00007ffff7edd814 in abigail::dwarf_reader::build_ir_node_from_die (ctxt=..., die=0x7fffffffc300, called_from_public_decl=<optimized out>, where_offset=910651) at /usr/include/c++/11/bits/shared_ptr_base.h:1295
#7  0x00007ffff7ecb9f3 in abigail::dwarf_reader::build_translation_unit_and_add_to_ir (ctxt=..., die=0x7fffffffc2e0, address_size=<optimized out>) at ../../../libabigail/src/abg-dwarf-reader.cc:6703
#8  0x00007ffff7ee603a in abigail::dwarf_reader::read_debug_info_into_corpus (ctxt=...) at ../../../libabigail/src/abg-dwarf-reader.cc:14384
#9  abigail::dwarf_reader::read_corpus_from_elf (ctxt=..., status=@0x7fffffffc8b4: abigail::dwarf_reader::STATUS_UNKNOWN) at ../../../libabigail/src/abg-dwarf-reader.cc:15636
#10 0x0000000000404ce9 in load_corpus_and_write_abixml (opts=..., context=std::shared_ptr<abigail::dwarf_reader::read_context> (use count 1, weak count 0) = {...}, env=std::shared_ptr<abigail::ir::environment> (use count 1, weak count 0) = {...}, argv=0x7fffffffce38) at ../../../libabigail/tools/abidw.cc:505
#11 main (argc=<optimized out>, argv=0x7fffffffce38) at ../../../libabigail/tools/abidw.cc:893

This was at a similar location as 28324 but the function is different.
Comment 1 Ben Woodard 2021-10-20 18:57:49 UTC
This failure continues to exist with trunk as of 7f57aa7959ef4a715822b0d3fb2647bbad90afc8 but the location and the fingerprint of the failure is entirely different.

Starting program: /home/ben/Shared/Work/test/libabigail-x86_64/bin/abidw --abidiff /home/ben/Shared/Work/spack/opt/spack/linux-fedora34-skylake/gcc-11.2.1/trilinos-13.0.1-j5fl5elhu3aaqmmapg24qpil4whx5hur/lib/liblocaepetra.so.13.0
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Downloading separate debug info for /lib64/libldap_r-2.4.so.2...
Downloading separate debug info for /home/ben/.cache/debuginfod_client/4cfc654d72336e0cd78467fa72540032d161b3ea/debuginfo...
Downloading separate debug info for /lib64/liblber-2.4.so.2...
abidw: ../../../libabigail/src/abg-comparison.cc:5272: void abigail::comparison::class_diff::ensure_lookup_tables_populated() const: Assertion `__abg_cond__' failed.

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49	  return ret;
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007ffff75148a4 in __GI_abort () at abort.c:79
#2  0x00007ffff7514789 in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>, file=<optimized out>, line=<optimized out>, function=<optimized out>) at assert.c:92
#3  0x00007ffff7523a16 in __GI___assert_fail (assertion=0x7ffff7f34f15 "__abg_cond__", file=0x7ffff7f3d400 "../../../libabigail/src/abg-comparison.cc", line=5272, function=0x7ffff7f3fa38 "void abigail::comparison::class_diff::ensure_lookup_tables_populated() const") at assert.c:101
#4  0x00007ffff7e11865 in abigail::comparison::class_diff::ensure_lookup_tables_populated (this=0xbd50b0) at ../../../libabigail/src/abg-comparison.cc:5272
#5  0x00007ffff7e12898 in abigail::comparison::compute_diff (first=..., second=..., ctxt=...) at /usr/include/c++/11/bits/shared_ptr_base.h:1295
#6  0x00007ffff7dfec1c in abigail::comparison::try_to_diff<abigail::ir::class_decl> (ctxt=..., second=..., first=...) at ../../../libabigail/src/abg-comparison.cc:2747
#7  abigail::comparison::compute_diff_for_types (first=..., second=..., ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:2802
#8  0x00007ffff7e042ff in abigail::comparison::compute_diff (first=std::shared_ptr<abigail::ir::qualified_type_def> (use count 17, weak count 5) = {...}, second=std::shared_ptr<abigail::ir::qualified_type_def> (use count 18, weak count 4) = {...}, ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:3955
#9  0x00007ffff7e30396 in abigail::comparison::try_to_diff<abigail::ir::qualified_type_def> (first=..., second=..., ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:2704
#10 0x00007ffff7dff844 in abigail::comparison::compute_diff_for_types (first=..., second=..., ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:2806
#11 0x00007ffff7e0695f in abigail::comparison::compute_diff (first=std::shared_ptr<abigail::ir::reference_type_def> (use count 17, weak count 13) = {...}, second=std::shared_ptr<abigail::ir::reference_type_def> (use count 18, weak count 3) = {...}, ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:3795
#12 0x00007ffff7dff3f9 in abigail::comparison::try_to_diff<abigail::ir::reference_type_def> (ctxt=..., second=..., first=...) at ../../../libabigail/src/abg-comparison.cc:2704
#13 abigail::comparison::compute_diff_for_types (first=..., second=..., ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:2804
#14 0x00007ffff7e00576 in abigail::comparison::compute_diff (first=..., second=..., ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:3176
#15 0x00007ffff7e193bc in abigail::comparison::function_type_diff::ensure_lookup_tables_populated (this=0x477ada0) at ../../../libabigail/src/abg-comparison.cc:6760
#16 0x00007ffff7e1b532 in abigail::comparison::compute_diff (first=..., second=..., ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:7063
#17 0x00007ffff7e21995 in abigail::comparison::compute_diff (first=std::shared_ptr<abigail::ir::function_decl> (use count 2, weak count 0) = {...}, second=std::shared_ptr<abigail::ir::function_decl> (use count 2, weak count 0) = {...}, ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at ../../../libabigail/src/abg-comparison.cc:7209
#18 0x00007ffff7e28073 in abigail::comparison::corpus_diff::priv::ensure_lookup_tables_populated (this=0xa96700) at ../../../libabigail/src/abg-comparison.cc:8929
#19 0x00007ffff7e322fa in abigail::comparison::compute_diff (f=std::shared_ptr<abigail::ir::corpus> (use count 3, weak count 0) = {...}, s=std::shared_ptr<abigail::ir::corpus> (use count 4, weak count 0) = {...}, ctxt=std::shared_ptr<abigail::comparison::diff_context> (use count 27, weak count 786) = {...}) at /usr/include/c++/11/bits/unique_ptr.h:173
#20 0x00000000004058ef in load_corpus_and_write_abixml (opts=..., context=std::shared_ptr<abigail::dwarf_reader::read_context> (empty) = {...}, env=std::shared_ptr<abigail::ir::environment> (use count 1, weak count 0) = {...}, argv=0x7fffffffcce8) at ../../../libabigail/tools/abidw.cc:635
#21 main (argc=<optimized out>, argv=0x7fffffffcce8) at ../../../libabigail/tools/abidw.cc:915
Comment 2 Ben Woodard 2021-10-20 19:01:46 UTC
I currently have three libraries which fail with this assert and they are all part of Trilinos.

Description:
    The Trilinos Project is an effort to develop algorithms and enabling
    technologies within an object-oriented software framework for the
    solution of large-scale, complex multi-physics engineering and
    scientific problems. A unique design feature of Trilinos is its focus on
    packages.

Homepage: https://trilinos.org/
Comment 3 Dodji Seketeli 2021-11-12 17:42:30 UTC
This should now be fixed by commit https://sourceware.org/git/?p=libabigail.git;a=commit;h=861e4670b611b2f95d69f68bb1edaa15ab5f3aa5.

Thanks!
Comment 4 Dodji Seketeli 2021-11-12 17:42:55 UTC
Closing.