Bug 21201 - Crash when comparing packages with --redundant and --suppressions options
Summary: Crash when comparing packages with --redundant and --suppressions options
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:
 
Reported: 2017-02-27 11:52 UTC by Dodji Seketeli
Modified: 2017-02-27 12:21 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 Dodji Seketeli 2017-02-27 11:52:17 UTC
This bug was file downstream in Fedora bugzilla at https://bugzilla.redhat.com/show_bug.cgi?id=1420803.

Please go to that downstream bug to get the required attached suppression specification file.

Here is a copy of the description that was filed there:

Description of problem:
When comparing gnutls packages, abipkgdiff crashes when the command line includes --redundant and --suppressions switch

Version-Release number of selected component (if applicable):
libabigail-1.0-0.8.rc6.4.fc24.x86_64

How reproducible:
Always

Steps to Reproduce:
1. abipkgdiff --redundant --suppressions ~/rhel-tests/gnutls/libabigail-suppressions --d1 gnutls-debuginfo-2.8.5-19.el6_7.x86_64.rpm --d2 gnutls-debuginfo-2.12.23-19.el6.x86_64.rpm gnutls-2.8.5-19.el6_7.x86_64.rpm gnutls-2.12.23-19.el6.x86_64.rpm

Actual results:
abipkgdiff: abg-comparison.cc:8332: virtual void abigail::comparison::fn_parm_diff::report(std::ostream&, const string&) const: Assertion `get_type_diff() && get_type_diff()->to_be_reported()' failed.
Aborted (core dumped)

Expected results:
report printed

Additional info:
==31692== Process terminating with default action of signal 6 (SIGABRT): dumping core
==31692==    at 0x659B765: raise (raise.c:54)
==31692==    by 0x659D369: abort (abort.c:89)
==31692==    by 0x6593F96: __assert_fail_base (assert.c:92)
==31692==    by 0x6594041: __assert_fail (assert.c:101)
==31692==    by 0x4F5D9B6: abigail::comparison::fn_parm_diff::report(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (abg-comparison.cc:8332)
==31692==    by 0x4F69C84: abigail::comparison::function_type_diff::report(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (abg-comparison.cc:8708)
==31692==    by 0x4F6BE00: abigail::comparison::function_decl_diff::report(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (abg-comparison.cc:9282)
==31692==    by 0x4F8B8C0: abigail::comparison::corpus_diff::report(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (abg-comparison.cc:12388)
==31692==    by 0x112B08: pthread_routine_compare(std::vector<std::tr1::shared_ptr<compare_args>, std::allocator<std::tr1::shared_ptr<compare_args> > >*) (abipkgdiff.cc:1239)
==31692==    by 0x63525C9: start_thread (pthread_create.c:333)
==31692==    by 0x666A0EC: clone (clone.S:109)



[Thread 0x7fffeffff700 (LWP 31764) exited]
abipkgdiff: abg-comparison.cc:8332: virtual void abigail::comparison::fn_parm_diff::report(std::ostream&, const string&) const: Assertion `get_type_diff() && get_type_diff()->to_be_reported()' failed.

Thread 10 "abipkgdiff" received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff5a97700 (LWP 31765)]
0x00007ffff631c765 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
54        return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
(gdb) bt
#0  0x00007ffff631c765 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1  0x00007ffff631e36a in __GI_abort () at abort.c:89
#2  0x00007ffff6314f97 in __assert_fail_base (fmt=<optimized out>, 
    assertion=assertion@entry=0x7ffff7b68898 "get_type_diff() && get_type_diff()->to_be_reported()", 
    file=file@entry=0x7ffff7b6799c "abg-comparison.cc", line=line@entry=8332, 
    function=function@entry=0x7ffff7b6a9c0 <abigail::comparison::fn_parm_diff::report(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const::__PRETTY_FUNCTION__> "virtual void abigail::comparison::fn_parm_diff::report(std::ostream&, const string&) const") at assert.c:92
#3  0x00007ffff6315042 in __GI___assert_fail (
    assertion=assertion@entry=0x7ffff7b68898 "get_type_diff() && get_type_diff()->to_be_reported()", 
    file=file@entry=0x7ffff7b6799c "abg-comparison.cc", line=line@entry=8332, 
    function=function@entry=0x7ffff7b6a9c0 <abigail::comparison::fn_parm_diff::report(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const::__PRETTY_FUNCTION__> "virtual void abigail::comparison::fn_parm_diff::report(std::ostream&, const string&) const") at assert.c:101
#4  0x00007ffff7a5d9b7 in abigail::comparison::fn_parm_diff::report (this=0x7ffff0277e50, out=..., indent="      ")
    at abg-comparison.cc:8332
#5  0x00007ffff7a69c85 in abigail::comparison::function_type_diff::report (this=0x7ffff0277de0, out=..., indent="      ")
    at abg-comparison.cc:8708
#6  0x00007ffff7a6be01 in abigail::comparison::function_decl_diff::report (this=this@entry=0x7ffff013afe0, out=..., 
    indent="      ") at abg-comparison.cc:9282
#7  0x00007ffff7a8b8c1 in abigail::comparison::corpus_diff::report (this=0x7ffff0023130, out=..., indent="  ")
    at abg-comparison.cc:12388
#8  0x000055555555eb09 in pthread_routine_compare (args=0x7fffffffd340) at abipkgdiff.cc:1239
#9  0x00007ffff66b15ca in start_thread (arg=0x7ffff5a97700) at pthread_create.c:333
#10 0x00007ffff63eb0ed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Comment 1 Dodji Seketeli 2017-02-27 12:21:29 UTC
This issue is fixed in master currently.  I don't know what change fixed it exactly, though.
Comment 2 Dodji Seketeli 2017-02-27 12:21:56 UTC
The fix will thus be available in the coming 1.0.rc7 release.