[Overview] Executing 'abidiff' against to 'libc.so' from centos7.6's 'glibc' will cause coredump, the output from 'bt' command of 'gdb' shows below: /* gdb output for 'libdovecot-storage.so' begin */ (gdb) bt #0 0x0000fffc0df966e0 in raise () from /lib64/libc.so.6 #1 0x0000fffc0df97a8c in abort () from /lib64/libc.so.6 #2 0x0000fffc0df8fb8c in ?? () from /lib64/libc.so.6 #3 0x0000fffc0df8fc0c in __assert_fail () from /lib64/libc.so.6 #4 0x0000fffc0e80ae88 in abigail::comparison::class_or_union_diff::ensure_lookup_tables_populated (this=this@entry=0x15602410) at abg-comparison.cc:4520 #5 0x0000fffc0e8027dc in abigail::comparison::class_diff::ensure_lookup_tables_populated (this=0x15602410) at abg-comparison.cc:5175 #6 0x0000fffc0e80416c in abigail::comparison::compute_diff (first=std::shared_ptr (count 17, weak 15) 0x1372e400, second=std::shared_ptr (count 29, weak 35) 0x13a61eb0, ctxt=std::shared_ptr (count 17, weak 3407) 0x12f52be0) at abg-comparison.cc:5756 ... #15 0x0000fffc0e807430 in abigail::comparison::compute_diff (first=std::shared_ptr (count 2, weak 0) 0x1400c2e0, second=std::shared_ptr (count 2, weak 0) 0x15249250, ctxt=std::shared_ptr (count 17, weak 3407) 0x12f52be0) at abg-comparison.cc:7118 #16 0x0000fffc0e80cdf4 in abigail::comparison::corpus_diff::priv::ensure_lookup_tables_populated (this=0x13bc1e50) at abg-comparison.cc:8811 #17 0x0000fffc0e80e9dc in abigail::comparison::compute_diff (f=std::shared_ptr (count 3, weak 0) 0x12f523c0, s=std::shared_ptr (count 3, weak 0) 0x1491a920, ctxt=std::shared_ptr (count 17, weak 3407) 0x12f52be0) at abg-comparison.cc:11019 #18 0x0000000000406148 in main (argc=<optimized out>, argv=<optimized out>) at abidiff.cc:1409 /* gdb output end */ (the backtrace of 'libdovecot-sieve.so' is similar as 'libdovecot-storage.so', thus it was skipped here.) [Steps to Reproduce] (1)confirm that we at the latest master branch # git remote -v origin git://sourceware.org/git/libabigail.git (fetch) origin git://sourceware.org/git/libabigail.git (push) # git branch * master # git log -5 --oneline 83bbc679 (HEAD -> master, origin/master, origin/HEAD) elf-reader: reclaim fd and mem before break e1aadfa5 Bug 29901 - abidiff hangs when comparing libgs.so.10 with itself 3c6a461b Update website documentation for 2.2 73d8782c configure: Bump version number to 2.3 7a7a00c3 ChangeLog: Update for 2.2 release # ./configure # make (2)assure the newly compiled 'abidiff' is linked to the newly compiled 'libabigail.so' # pwd /root/tmp/libabigail-git # ldd tools/.libs/abidiff ... libabigail.so.1 => /root/tmp/libabigail-git/src/.libs/libabigail.so.1 (0x0000fffbca4b0000) ... (3)download 'libdovecot-storage.so' and 'libdovecot-sieve.so' # mkdir dovecot/ && cd dovecot/ # wget https://vault.centos.org/7.6.1810/os/x86_64/Packages/dovecot-2.2.36-3.el7.x86_64.rpm # wget http://debuginfo.centos.org/7/x86_64/dovecot-debuginfo-2.2.36-3.el7.x86_64.rpm # wget https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP2/everything/x86_64/Packages/dovecot-2.3.10.1-6.oe1.x86_64.rpm # wget https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP2/debuginfo/x86_64/Packages/dovecot-debuginfo-2.3.10.1-6.oe1.x86_64.rpm # mkdir 2.2.36-with-debug/ 2.2.36-without-debug/ 2.3.10-with-debug/ 2.3.10-without-debug/ # rpm2cpio dovecot-2.2.36-3.el7.x86_64.rpm | cpio -idum -D 2.2.36-without-debug/ # rpm2cpio dovecot-debuginfo-2.2.36-3.el7.x86_64.rpm | cpio -idum -D 2.2.36-with-debug/ # rpm2cpio dovecot-2.3.10.1-6.oe1.x86_64.rpm | cpio -idum -D 2.3.10-without-debug/ # rpm2cpio dovecot-debuginfo-2.3.10.1-6.oe1.x86_64.rpm | cpio -idum -D 2.3.10-with-debug/ # cd ../ (4)use newly compiled 'abidiff' to reproducing the problem that causes coredump # ./tools/.libs/abidiff --d1 dovecot/2.2.36-with-debug/usr/lib/debug/ --d2 dovecot/2.3.10-with-debug/usr/lib/debug/ dovecot/2.2.36-without-debug/usr/lib64/dovecot/libdovecot-storage.so.0.0.0 dovecot/2.3.10-without-debug/usr/lib64/dovecot/libdovecot-storage.so.0.0.0 # ./tools/.libs/abidiff --d1 dovecot/2.2.36-with-debug/usr/lib/debug/ --d2 dovecot/2.3.10-with-debug/usr/lib/debug/ dovecot/2.2.36-without-debug/usr/lib64/dovecot/libdovecot-sieve.so.0.0.0 dovecot/2.3.10-without-debug/usr/lib64/dovecot/libdovecot-sieve.so.0.0.0 [Actual Results] (1)'abidiff' for 'libdovecot-storage.so' crashes with coredump: /* crash output begin */ abidiff: abg-comparison.cc:4521: void abigail::comparison::class_or_union_diff::ensure_lookup_tables_populated() const: Assertion `__abg_cond__' failed. Aborted (core dumped) /* crash output end */ (2)'abidiff' for 'libdovecot-sieve.so' crashes with coredump: /* crash output begin */ abidiff: abg-comparison.cc:4521: void abigail::comparison::class_or_union_diff::ensure_lookup_tables_populated() const: Assertion `__abg_cond__' failed. Aborted (core dumped) /* crash output end */ [Expected Results] 'abidiff' finishes normally with differences between two libraries.
Sorry, the 'Overview' was wrong above, corrected one is below: [Overview] Executing 'abidiff' against to 'libdovecot-storage.so' from rpm 'dovecot' will cause coredump, the output from 'bt' command of 'gdb' shows below:
Hello, This issue should hopefully be fixed in the master branch of the git repository at https://sourceware.org/git/?p=libabigail.git;a=commit;h=e3725f1b96ad2e935290bea8be7925f2a8cc3c89. The fix should be available in the coming 2.3 version of libabigail. Thank you for reporting this issue and sorry for the inconvenience.
(In reply to dodji from comment #2) > Hello, > > This issue should hopefully be fixed in the master branch of the git > repository at > https://sourceware.org/git/?p=libabigail.git;a=commit; > h=e3725f1b96ad2e935290bea8be7925f2a8cc3c89. > > The fix should be available in the coming 2.3 version of libabigail. > > Thank you for reporting this issue and sorry for the inconvenience. Thank you, dodji, for using your precious time in resolving this problem. I using the updated master branch of git, e3725f1b96ad2e935290bea8be7925f2a8cc3c89 (Bug 29934 - Handle buggy data members with empty names), to verify that the problem of 'libdovecot-storage.so' has been disappeared, but the similar problem of 'libdovecot-sieve.so' that caused coredump still exist, sorry for disturbing you again and the reproducing steps of 'libdovecot-storage.so' was wroten at the first comment of this page.
(In reply to Xiaole He from comment #3) > [...] the similar problem of > 'libdovecot-sieve.so' that caused coredump still exist, sorry for disturbing > you again and the reproducing steps of 'libdovecot-storage.so' was wroten at > the first comment of this page. Ooops, I totally missed the second issue. That one is different from the one occurring on libdovecot-storage.so. I'll be looking at the second issue. Sorry for the noise.
The second issue of the problem reported here (assertion violation when analysing the binary libdovecot-sieve.so) should be fixed by commit https://sourceware.org/git/?p=libabigail.git;a=commit;h=4f4ab2b1d66770f6e3cc56ec844e47a5ceec1edb. Thanks for taking the time to report this problem and sorry for the inconvenience.
(In reply to dodji from comment #5) > The second issue of the problem reported here (assertion violation when > analysing the binary libdovecot-sieve.so) should be fixed by commit > https://sourceware.org/git/?p=libabigail.git;a=commit; > h=4f4ab2b1d66770f6e3cc56ec844e47a5ceec1edb. > > Thanks for taking the time to report this problem and sorry for the > inconvenience. Thank you very much, dodji. I already confirmed that this problem has been fixed. professional man, great job!