* [Bug default/28013] New: abidiff assertion failure @ 2021-06-25 23:20 gprocida at google dot com 2021-06-26 5:46 ` [Bug default/28013] " gprocida at google dot com ` (5 more replies) 0 siblings, 6 replies; 7+ messages in thread From: gprocida at google dot com @ 2021-06-25 23:20 UTC (permalink / raw) To: libabigail https://sourceware.org/bugzilla/show_bug.cgi?id=28013 Bug ID: 28013 Summary: abidiff assertion failure Product: libabigail Version: unspecified Status: UNCONFIRMED Severity: normal Priority: P2 Component: default Assignee: dodji at redhat dot com Reporter: gprocida at google dot com CC: libabigail at sourceware dot org Target Milestone: --- This small case triggers an assertion failure. If assertions are disabled the output looks sane. abidiff: ../../src/abg-ir.cc:24767: size_t abigail::ir::hash_as_canonical_type_or_constant(const abigail::ir::type_base*): Assertion `__abg_cond__' failed. Aborted ==> fn_variadic_c.0.abi <== <abi-corpus version='2.0' path='fn_variadic_c.0.o' architecture='elf-amd-x86_64'> <elf-function-symbols> <elf-symbol name='foo1' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='foo2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='foo3' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> <abi-instr address-size='64' path='fn_variadic_c.0.c' language='LANG_C99'> <type-decl name='int' size-in-bits='32' id='95e97e5e'/> <type-decl name='variadic parameter type' id='2c1145c5'/> <function-decl name='foo3' mangled-name='foo3' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo3'> <parameter type-id='95e97e5e' name='x'/> <parameter type-id='95e97e5e' name='y'/> <parameter is-variadic='yes'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='foo2' mangled-name='foo2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo2'> <parameter type-id='95e97e5e' name='x'/> <parameter type-id='95e97e5e' name='y'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='foo1' mangled-name='foo1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo1'> <parameter type-id='95e97e5e' name='x'/> <parameter type-id='95e97e5e' name='y'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> </abi-corpus> ==> fn_variadic_c.1.abi <== <abi-corpus version='2.0' path='fn_variadic_c.1.o' architecture='elf-amd-x86_64'> <elf-function-symbols> <elf-symbol name='foo1' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='foo2' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> <elf-symbol name='foo3' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> <abi-instr address-size='64' path='fn_variadic_c.1.c' language='LANG_C99'> <type-decl name='int' size-in-bits='32' id='95e97e5e'/> <type-decl name='variadic parameter type' id='2c1145c5'/> <function-decl name='foo3' mangled-name='foo3' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo3'> <parameter type-id='95e97e5e' name='x'/> <parameter type-id='95e97e5e' name='y'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='foo2' mangled-name='foo2' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo2'> <parameter type-id='95e97e5e' name='x'/> <parameter is-variadic='yes'/> <return type-id='95e97e5e'/> </function-decl> <function-decl name='foo1' mangled-name='foo1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo1'> <parameter type-id='95e97e5e' name='x'/> <parameter type-id='95e97e5e' name='y'/> <parameter is-variadic='yes'/> <return type-id='95e97e5e'/> </function-decl> </abi-instr> </abi-corpus> It's also interesting that the XML contains a variadic parameter type but this isn't used in the parameter lists. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug default/28013] abidiff assertion failure 2021-06-25 23:20 [Bug default/28013] New: abidiff assertion failure gprocida at google dot com @ 2021-06-26 5:46 ` gprocida at google dot com 2021-07-14 8:52 ` gprocida at google dot com ` (4 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: gprocida at google dot com @ 2021-06-26 5:46 UTC (permalink / raw) To: libabigail https://sourceware.org/bugzilla/show_bug.cgi?id=28013 --- Comment #1 from gprocida at google dot com --- Here's a minimal test case. $ head fn_variadic_c.{0,1}.c; for i in 0 1; do gcc -Wall -Wextra -g -c fn_variadic_c.$i.c; ~/android/libabigail/build/tools/abidw fn_variadic_c.$i.o > fn_variadic_c.$i.abi; done; head -50 fn_variadic_c.{0,1}.abi; ~/android/libabigail/build/tools/abidiff fn_variadic_c.{0,1}.abi ==> fn_variadic_c.0.c <== int foo(int x, int y) { return x + y; } ==> fn_variadic_c.1.c <== int foo(int x, ...) { return x; } ==> fn_variadic_c.0.abi <== <abi-corpus version='2.0' path='fn_variadic_c.0.o' architecture='elf-amd-x86_64'> <elf-function-symbols> <elf-symbol name='foo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> <abi-instr address-size='64' path='fn_variadic_c.0.c' comp-dir-path='/tmp' language='LANG_C99'> <type-decl name='int' size-in-bits='32' id='type-id-1'/> <function-decl name='foo' mangled-name='foo' filepath='/tmp/fn_variadic_c.0.c' line='1' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo'> <parameter type-id='type-id-1' name='x' filepath='/tmp/fn_variadic_c.0.c' line='1' column='1'/> <parameter type-id='type-id-1' name='y' filepath='/tmp/fn_variadic_c.0.c' line='1' column='1'/> <return type-id='type-id-1'/> </function-decl> </abi-instr> </abi-corpus> ==> fn_variadic_c.1.abi <== <abi-corpus version='2.0' path='fn_variadic_c.1.o' architecture='elf-amd-x86_64'> <elf-function-symbols> <elf-symbol name='foo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/> </elf-function-symbols> <abi-instr address-size='64' path='fn_variadic_c.1.c' comp-dir-path='/tmp' language='LANG_C99'> <type-decl name='int' size-in-bits='32' id='type-id-1'/> <type-decl name='variadic parameter type' id='type-id-2'/> <function-decl name='foo' mangled-name='foo' filepath='/tmp/fn_variadic_c.1.c' line='1' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo'> <parameter type-id='type-id-1' name='x' filepath='/tmp/fn_variadic_c.1.c' line='1' column='1'/> <parameter is-variadic='yes'/> <return type-id='type-id-1'/> </function-decl> </abi-instr> </abi-corpus> abidiff: ../../src/abg-ir.cc:24767: size_t abigail::ir::hash_as_canonical_type_or_constant(const abigail::ir::type_base*): Assertion `__abg_cond__' failed. Aborted -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug default/28013] abidiff assertion failure 2021-06-25 23:20 [Bug default/28013] New: abidiff assertion failure gprocida at google dot com 2021-06-26 5:46 ` [Bug default/28013] " gprocida at google dot com @ 2021-07-14 8:52 ` gprocida at google dot com 2021-08-12 22:14 ` gprocida at google dot com ` (3 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: gprocida at google dot com @ 2021-07-14 8:52 UTC (permalink / raw) To: libabigail https://sourceware.org/bugzilla/show_bug.cgi?id=28013 --- Comment #2 from gprocida at google dot com --- Looks like it might be a canonicalisation issue with variadic function parameters. #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007ffff798d537 in __GI_abort () at abort.c:79 #2 0x00007ffff798d40f in __assert_fail_base (fmt=0x7ffff7af6128 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55555575e725 "__abg_cond__", file=0x55555575e711 "../../src/abg-ir.cc", line=24781, function=<optimized out>) at assert.c:92 #3 0x00007ffff799c662 in __GI___assert_fail (assertion=assertion@entry=0x55555575e725 "__abg_cond__", file=file@entry=0x55555575e711 "../../src/abg-ir.cc", line=line@entry=24781, function=function@entry=0x55555575f0e0 "size_t abigail::ir::hash_as_canonical_type_or_constant(const abigail::ir::type_base*)") at assert.c:101 #4 0x0000555555587888 in abigail::ir::hash_as_canonical_type_or_constant (t=0x5555558358e0) at ../../src/abg-ir.cc:24781 #5 0x000055555558c783 in abigail::ir::hash_type (t=<optimized out>) at ../../src/abg-ir.cc:24728 #6 0x000055555559dd01 in abigail::ir::hash_type_or_decl (tod=0x5555558358b8) at ../../src/abg-ir.cc:24655 #7 0x000055555559e22b in abigail::ir::hash_type_or_decl (tod=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 13, weak count 1) = {...}) at /usr/include/c++/10/bits/shared_ptr_base.h:1324 #8 0x000055555563f7f0 in abigail::comparison::types_or_decls_hash::operator() (d={...}, this=0x55555581f838) at ../../src/abg-comparison-priv.h:61 #9 std::__detail::_Hash_code_base<std::pair<std::shared_ptr<abigail::ir::type_or_decl_base> const, std::shared_ptr<abigail::ir::type_or_decl_base> const>, std::pair<std::pair<std::shared_ptr<abigail::ir::type_or_decl_base> const, std::shared_ptr<abigail::ir::type_or_decl_base> con st> const, std::shared_ptr<abigail::comparison::diff> >, std::__detail::_Select1st, abigail::comparison::types_or_decls_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, true>::_M_hash_code (__k={...}, this=0x55555581f838) at /usr/include/c++/10/bits/hashtable_policy.h:1379 #10 std::_Hashtable<std::pair<std::shared_ptr<abigail::ir::type_or_decl_base> const, std::shared_ptr<abigail::ir::type_or_decl_base> const>, std::pair<std::pair<std::shared_ptr<abigail::ir::type_or_decl_base> const, std::shared_ptr<abigail::ir::type_or_decl_base> const> const, std: :shared_ptr<abigail::comparison::diff> >, std::allocator<std::pair<std::pair<std::shared_ptr<abigail::ir::type_or_decl_base> const, std::shared_ptr<abigail::ir::type_or_decl_base> const> const, std::shared_ptr<abigail::comparison::diff> > >, std::__detail::_Select1st, abigail::comp arison::types_or_decls_equal, abigail::comparison::types_or_decls_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::find (this=0x55555581f838, __k={...}) at /usr/include/c++/10/bits/hashtable.h:1452 #11 0x0000555555613829 in std::unordered_map<std::pair<std::shared_ptr<abigail::ir::type_or_decl_base> const, std::shared_ptr<abigail::ir::type_or_decl_base> const>, std::shared_ptr<abigail::comparison::diff>, abigail::comparison::types_or_decls_hash, abigail::comparison::types_or_ decls_equal, std::allocator<std::pair<std::pair<std::shared_ptr<abigail::ir::type_or_decl_base> const, std::shared_ptr<abigail::ir::type_or_decl_base> const> const, std::shared_ptr<abigail::comparison::diff> > > >::find (__x={...}, this=<optimized out>) at /usr/include/c++/10/bits/unordered_map.h:919 #12 abigail::comparison::diff_context::has_diff_for (this=<optimized out>, first=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 17, weak count 8) = {...}, second=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 13, weak count 1) = {...}) at ../../src/abg-comparison.cc:993 #13 0x0000555555613cf9 in abigail::comparison::diff_context::get_canonical_diff_for (this=this@entry=0x5555558037f0, first=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 17, weak count 8) = {...}, second=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 13, weak count 1) = {...}) at /usr/include/c++/10/ext/atomicity.h:100 #14 0x000055555561a992 in abigail::comparison::diff_context::set_or_get_canonical_diff_for (this=this@entry=0x5555558037f0, first=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 17, weak count 8) = {...}, second=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 13, weak count 1) = {...}, canonical_diff=std::shared_ptr<class abigail::comparison::diff> (use count 3, weak count 0) = {...}) at /usr/include/c++/10/ext/atomicity.h:100 #15 0x000055555561abd8 in abigail::comparison::diff_context::initialize_canonical_diff (this=0x5555558037f0, diff=std::shared_ptr<class abigail::comparison::diff> (use count 3, weak count 0) = {...}) at /usr/include/c++/10/bits/shared_ptr_base.h:1324 #16 0x000055555561b557 in abigail::comparison::compute_diff (first=std::shared_ptr<class abigail::ir::type_decl> (use count 17, weak count 8) = {...}, second=std::shared_ptr<class abigail::ir::type_decl> (use count 13, weak count 1) = {...}, ctxt=std::shared_ptr<class abigail::comparison::diff_context> (use count 10, weak count 5) = {...}) at /usr/include/c++/10/ext/atomicity.h:100 #17 0x000055555565ae29 in abigail::comparison::try_to_diff<abigail::ir::type_decl> (first=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 17, weak count 8) = {...}, second=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 13, weak count 1) = {...}, ctxt=std::shared_ptr<class abigail::comparison::diff_context> (use count 10, weak count 5) = {...}) at /usr/include/c++/10/ext/atomicity.h:100 #18 0x0000555555626b44 in abigail::comparison::compute_diff_for_types (first=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 17, weak count 8) = {...}, second=std::shared_ptr<class abigail::ir::type_or_decl_base> (use count 13, weak count 1) = {...}, ctxt=std::shared_ptr<class abigail::comparison::diff_context> (use count 10, weak count 5) = {...}) at /usr/include/c++/10/bits/shared_ptr_base.h:736 #19 0x000055555562e9ad in abigail::comparison::compute_diff (first=std::shared_ptr<class abigail::ir::type_base> (use count 17, weak count 8) = {...}, second=std::shared_ptr<class abigail::ir::type_base> (use count 13, weak count 1) = {...}, ctxt=std::shared_ptr<class abigail::comparison::diff_context> (use count 10, weak count 5) = {...}) at /usr/include/c++/10/ext/atomicity.h:100 #20 0x000055555562f26a in abigail::comparison::fn_parm_diff::fn_parm_diff (this=0x55555582a0c0, first=std::shared_ptr<class abigail::ir::function_decl::parameter> (use count 6, weak count 0) = {...}, second=std::shared_ptr<class abigail::ir::function_decl::parameter> (use count 5, weak count 0) = {...}, ctxt=std::shared_ptr<class abigail::comparison::diff_context> (use count 10, weak count 5) = {...}) at /usr/include/c++/10/bits/shared_ptr_base.h:1324 #21 0x000055555562f51d in abigail::comparison::compute_diff (first=std::shared_ptr<class abigail::ir::function_decl::parameter> (use count 6, weak count 0) = {...}, second=std::shared_ptr<class abigail::ir::function_decl::parameter> (use count 5, weak count 0) = {...}, ctxt=std::shared_ptr<class abigail::comparison::diff_context> (use count 10, weak count 5) = {...}) at /usr/include/c++/10/ext/atomicity.h:97 #22 0x000055555562fe4e in abigail::comparison::function_type_diff::ensure_lookup_tables_populated (this=this@entry=0x55555581f9a0) at /usr/include/c++/10/ext/atomicity.h:100 #23 0x0000555555622928 in abigail::comparison::compute_diff (first=std::shared_ptr<class abigail::ir::function_type> (use count 4, weak count 3) = {...}, second=std::shared_ptr<class abigail::ir::function_type> (use count 4, weak count 3) = {...}, ctxt=std::shared_ptr<class abigail::comparison::diff_context> (use count 10, weak count 5) = {...}) at /usr/include/c++/10/bits/shared_ptr_base.h:1324 #24 0x0000555555622ae2 in abigail::comparison::compute_diff (first=std::shared_ptr<class abigail::ir::function_decl> (use count 2, weak count 0) = {...}, second=std::shared_ptr<class abigail::ir::function_decl> (use count 2, weak count 0) = {...}, ctxt=std::shared_ptr<class abigail::comparison::diff_context> (use count 10, weak count 5) = {...}) at /usr/include/c++/10/bits/shared_ptr_base.h:1324 #25 0x000055555563321f in abigail::comparison::corpus_diff::priv::ensure_lookup_tables_populated (this=0x55555582c470) at /usr/include/c++/10/ext/atomicity.h:100 #26 0x00005555556356c4 in abigail::comparison::compute_diff (f=std::shared_ptr<class abigail::ir::corpus> (use count 3, weak count 0) = {...}, s=..., ctxt=...) at /usr/include/c++/10/bits/shared_ptr_base.h:1324 #27 0x000055555557df82 in main (argc=<optimized out>, argv=0x7fffffffd7a8) at /usr/include/c++/10/bits/shared_ptr_base.h:736 I'm going to leave this one to Dodji. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug default/28013] abidiff assertion failure 2021-06-25 23:20 [Bug default/28013] New: abidiff assertion failure gprocida at google dot com 2021-06-26 5:46 ` [Bug default/28013] " gprocida at google dot com 2021-07-14 8:52 ` gprocida at google dot com @ 2021-08-12 22:14 ` gprocida at google dot com 2022-01-14 16:10 ` gprocida at google dot com ` (2 subsequent siblings) 5 siblings, 0 replies; 7+ messages in thread From: gprocida at google dot com @ 2021-08-12 22:14 UTC (permalink / raw) To: libabigail https://sourceware.org/bugzilla/show_bug.cgi?id=28013 --- Comment #3 from gprocida at google dot com --- This appears to be fixed with current upstream master. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug default/28013] abidiff assertion failure 2021-06-25 23:20 [Bug default/28013] New: abidiff assertion failure gprocida at google dot com ` (2 preceding siblings ...) 2021-08-12 22:14 ` gprocida at google dot com @ 2022-01-14 16:10 ` gprocida at google dot com 2022-03-07 9:42 ` dodji at redhat dot com 2022-03-07 11:07 ` dodji at redhat dot com 5 siblings, 0 replies; 7+ messages in thread From: gprocida at google dot com @ 2022-01-14 16:10 UTC (permalink / raw) To: libabigail https://sourceware.org/bugzilla/show_bug.cgi?id=28013 --- Comment #4 from gprocida at google dot com --- This is again an issue, at 71633a7c0c7c96c03db8c18826afea26da0f7b4b. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug default/28013] abidiff assertion failure 2021-06-25 23:20 [Bug default/28013] New: abidiff assertion failure gprocida at google dot com ` (3 preceding siblings ...) 2022-01-14 16:10 ` gprocida at google dot com @ 2022-03-07 9:42 ` dodji at redhat dot com 2022-03-07 11:07 ` dodji at redhat dot com 5 siblings, 0 replies; 7+ messages in thread From: dodji at redhat dot com @ 2022-03-07 9:42 UTC (permalink / raw) To: libabigail https://sourceware.org/bugzilla/show_bug.cgi?id=28013 dodji at redhat dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-03-07 Ever confirmed|0 |1 Status|UNCONFIRMED |ASSIGNED -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug default/28013] abidiff assertion failure 2021-06-25 23:20 [Bug default/28013] New: abidiff assertion failure gprocida at google dot com ` (4 preceding siblings ...) 2022-03-07 9:42 ` dodji at redhat dot com @ 2022-03-07 11:07 ` dodji at redhat dot com 5 siblings, 0 replies; 7+ messages in thread From: dodji at redhat dot com @ 2022-03-07 11:07 UTC (permalink / raw) To: libabigail https://sourceware.org/bugzilla/show_bug.cgi?id=28013 dodji at redhat dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution|--- |FIXED --- Comment #5 from dodji at redhat dot com --- This should be fixed by the patch below, applied to master. Thanks. https://sourceware.org/pipermail/libabigail/2022q1/004207.html -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-03-07 11:07 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-06-25 23:20 [Bug default/28013] New: abidiff assertion failure gprocida at google dot com 2021-06-26 5:46 ` [Bug default/28013] " gprocida at google dot com 2021-07-14 8:52 ` gprocida at google dot com 2021-08-12 22:14 ` gprocida at google dot com 2022-01-14 16:10 ` gprocida at google dot com 2022-03-07 9:42 ` dodji at redhat dot com 2022-03-07 11:07 ` dodji at redhat dot com
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).