public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* [Bug default/21228] New: Cannot clone a function that is a member of a union
@ 2017-01-01  0:00 dodji at redhat dot com
  2017-01-01  0:00 ` [Bug default/21228] " dodji at redhat dot com
  0 siblings, 1 reply; 2+ messages in thread
From: dodji at redhat dot com @ 2017-01-01  0:00 UTC (permalink / raw)
  To: libabigail

https://sourceware.org/bugzilla/show_bug.cgi?id=21228

            Bug ID: 21228
           Summary: Cannot clone a function that is a member of a union
           Product: libabigail
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: default
          Assignee: dodji at redhat dot com
          Reporter: dodji at redhat dot com
                CC: libabigail at sourceware dot org
  Target Milestone: ---

This is a bug that was filled downstream at
https://bugzilla.redhat.com/show_bug.cgi?id=1429018.


Basically, while running abipkgdiff on two tbb packages, the program aborted
with the call stack below.  The abort is the result of an assertion violation
raised during the cloning of a member function, while analyzing the debug info
of a tbb library.

The assertion is that a member function is necessarily a member of a
class_decl.  Note that today, that assertion should (indeed) not be true
anymore, since we now support union types; and in C++, a union type can have
member functions.

Note that the assertion violation was raised during the cloning of a member
function.

I am pasting the interesting call stack below.  The binaries (RPMs) necessary
to reproduce the issue can be retrieved from the downstream bug.

Thread 1 (Thread 0x7f9abcc79700 (LWP 8471)):
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
        set = {__val = {0, 140302568881544, 140302427721456, 140302586491404,
140303624142848, 140302427721456, 140302427721557, 140302427721456,
140302427721456, 140302427721586, 140302427721756, 140302427721456,
140302427721756, 0, 0, 0}}
        pid = <optimized out>
        tid = <optimized out>
#1  0x00007f9abdd0251a in __GI_abort () at abort.c:89
        save_stage = 2
        act = {__sigaction_handler = {sa_handler = 0x7f9ab45c5f00, sa_sigaction
= 0x7f9ab45c5f00}, sa_mask = {__val = {140302568881440, 140302568881296, 4,
3025952512, 140302616236032, 140302611742621, 11617, 140302611677440, 0,
140302568881680, 140302586548924, 140302587639856, 140302587625496, 0,
140302587625496, 140302611742621}}, sa_flags = -1080422400, sa_restorer =
0x7f9abf557f9d}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007f9abdcf8da7 in __assert_fail_base (fmt=<optimized out>,
assertion=assertion@entry=0x7f9abf557f9d "scope",
file=file@entry=0x7f9abf5470cf "abg-ir.cc", line=line@entry=11617,
function=function@entry=0x7f9abf548100 <abigail::ir::function_decl::clone()
const::__PRETTY_FUNCTION__> "abigail::ir::function_decl_sptr
abigail::ir::function_decl::clone() const") at assert.c:92
        str = 0x7f9ab45d9030 "abipkgdiff: abg-ir.cc:11617:
abigail::ir::function_decl_sptr abigail::ir::function_decl::clone() const:
Assertion `scope' failed.\n"
        total = 4096
#3  0x00007f9abdcf8e52 in __GI___assert_fail
(assertion=assertion@entry=0x7f9abf557f9d "scope",
file=file@entry=0x7f9abf5470cf "abg-ir.cc", line=line@entry=11617,
function=function@entry=0x7f9abf548100 <abigail::ir::function_decl::clone()
const::__PRETTY_FUNCTION__> "abigail::ir::function_decl_sptr
abigail::ir::function_decl::clone() const") at assert.c:101
No locals.
#4  0x00007f9abf414f58 in abigail::ir::function_decl::clone
(this=0x7f9ab4537ac0) at abg-ir.cc:11617
        m = std::tr1::shared_ptr (count 1, weak 0) 0x7f9ab44ca500
        scope = <optimized out>
        f = std::tr1::shared_ptr (empty) 0x0
        __PRETTY_FUNCTION__ = "abigail::ir::function_decl_sptr
abigail::ir::function_decl::clone() const"
#5  0x00007f9abf4f8e32 in abigail::dwarf_reader::build_ir_node_from_die
(ctxt=..., die=die@entry=0x7f9abcc78770, scope=<optimized out>,
called_from_public_decl=called_from_public_decl@entry=true,
where_offset=where_offset@entry=53812) at abg-dwarf-reader.cc:9979
        d = std::tr1::shared_ptr (count 6, weak 0) 0x7f9ab4537ad0
        linkage_name =
"_ZN3tbb8internal11atomic_implIPNS0_24concurrent_queue_base_v34pageEE9converterIS4_EC2ES4_"
        spec_linkage_name =
"_ZN3tbb8internal11atomic_implIPNS0_24concurrent_queue_base_v34pageEE9converterIS4_EC4ES4_"
        spec_die = {addr = 0x7f9abbade466, cu = 0x7f9ab4265108, abbrev =
0x7f9ab426a498, padding__ = 0}
        fn = std::tr1::shared_ptr (count 6, weak 0) 0x7f9ab4537ac0
        has_spec = <optimized out>
        abstract_origin_die = {addr = 0x7f9abbadf039, cu = 0x7f9ab4265108,
abbrev = 0x7f9ab426a4b8, padding__ = 0}
        interface_die = <optimized out>
        origin_die = <optimized out>
        interface_scope = std::tr1::shared_ptr (count 7, weak 4) 0x7f9ab45c5f00
        has_abstract_origin = true
        logical_scope = <optimized out>
        result = std::tr1::shared_ptr (empty) 0x0
        tag = 46
        source_of_die = abigail::dwarf_reader::PRIMARY_DEBUG_INFO_DIE_SOURCE
        __PRETTY_FUNCTION__ = "abigail::ir::type_or_decl_base_sptr
abigail::dwarf_reader::build_ir_node_from_die(abigail::dwarf_reader::read_context&,
Dwarf_Die*, abigail::ir::scope_decl*, bool, size_t)"
        __FUNCTION__ = "build_ir_node_from_die"
#6  0x00007f9abf4fe282 in abigail::dwarf_reader::build_ir_node_from_die
(ctxt=..., die=die@entry=0x7f9abcc78770, called_from_public_decl=true,
where_offset=where_offset@entry=53812) at abg-dwarf-reader.cc:10147
        scope = std::tr1::shared_ptr (count 7, weak 4) 0x7f9ab45c5f00
#7  0x00007f9abf505692 in
abigail::dwarf_reader::build_translation_unit_and_add_to_ir
(address_size=<optimized out>, die=0x7f9abcc78750, ctxt=..., this=<optimized
out>) at abg-dwarf-reader.cc:7571
        path = "../../src/tbb/concurrent_queue.cpp"
        l = 4
        child = {addr = 0x7f9abbadf052, cu = 0x7f9ab4265108, abbrev =
0x7f9ab426a4d8, padding__ = 0}
#8  abigail::dwarf_reader::read_debug_info_into_corpus (ctxt=...) at
abg-dwarf-reader.cc:9464
        die_offset = <optimized out>
        unit = {addr = 0x7f9abbadd340, cu = 0x7f9ab4265108, abbrev =
0x7f9ab426cc88, padding__ = 0}
        ir_node = std::tr1::shared_ptr (count 4, weak 0) 0x7f9ab44780a0
        offset = <optimized out>
        next_offset = 81603
        address_size = 64 '@'
        header_size = 11
        dwarf_version = 4
        __PRETTY_FUNCTION__ = "abigail::ir::corpus_sptr
abigail::dwarf_reader::read_debug_info_into_corpus(abigail::dwarf_reader::read_context&)"
#9  0x00007f9abf50700b in abigail::dwarf_reader::read_corpus_from_elf
(ctxt=..., status=@0x7f9abcc78ba4: abigail::dwarf_reader::STATUS_UNKNOWN) at
abg-dwarf-reader.cc:10282
        corp = std::tr1::shared_ptr (count 85, weak -1) 0x7f9ab4003ad0
#10 0x000055a76bf1f400 in compare (ctxt=<synthetic pointer>,
diff=std::tr1::shared_ptr (empty) 0x0, env=<synthetic pointer>, opts=...,
priv_types_supprs2=std::vector of length 0, capacity 0, debug_dir2=...,
elf2=..., priv_types_supprs1=std::vector of length 0, capacity 0,
debug_dir1=..., elf1=...) at abipkgdiff.cc:1101
        c = std::tr1::shared_ptr (count 1, weak 0) 0x7f9ab4003d60
        di_dir2 = 0x55a76d710a20
"/home/jamesjer/.cache/libabigail/abipkgdiff-tmp-dir-jymmY3/debug_package2/usr/lib/debug/"
        c1_status = abigail::dwarf_reader::STATUS_UNKNOWN
        corpus1 = std::tr1::shared_ptr (empty) 0x0
        s = (abigail::tools_utils::ABIDIFF_ERROR |
abigail::tools_utils::ABIDIFF_USAGE_ERROR |
abigail::tools_utils::ABIDIFF_ABI_CHANGE |
abigail::tools_utils::ABIDIFF_ABI_INCOMPATIBLE_CHANGE | unknown: 4294967280)
        di_dir1 = 0x55a76d710980
"/home/jamesjer/.cache/libabigail/abipkgdiff-tmp-dir-jymmY3/debug_package1/usr/lib/debug/"
        c2_status = abigail::dwarf_reader::STATUS_OK
        supprs = <optimized out>
        corpus2 = std::tr1::shared_ptr (empty) 0x0
#11 pthread_routine_compare (args=0x7ffdbb4fe6e0) at abipkgdiff.cc:1231
        env = std::tr1::shared_ptr (count 1, weak 0) 0x7f9ab4000b80
        key = ""
        status = abigail::tools_utils::ABIDIFF_OK
        a = std::tr1::shared_ptr (count 1, weak 0) 0x55a76d710ac0
        diff = std::tr1::shared_ptr (empty) 0x0
        ctxt = std::tr1::shared_ptr (count 1, weak 0) 0x7f9ab401a070
#12 0x00007f9abe0986ca in start_thread (arg=0x7f9abcc79700) at
pthread_create.c:333
        __res = <optimized out>
        pd = 0x7f9abcc79700
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140302568888064,
-3057515718200945651, 0, 140727746028767, 140302568888768, 140302568888064,
3072858095697105933, 3072855398679548941}, mask_was_saved = 0}}, priv = {pad =
{0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#13 0x00007f9abddd2f7f in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:105

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug default/21228] Cannot clone a function that is a member of a union
  2017-01-01  0:00 [Bug default/21228] New: Cannot clone a function that is a member of a union dodji at redhat dot com
@ 2017-01-01  0:00 ` dodji at redhat dot com
  0 siblings, 0 replies; 2+ messages in thread
From: dodji at redhat dot com @ 2017-01-01  0:00 UTC (permalink / raw)
  To: libabigail

https://sourceware.org/bugzilla/show_bug.cgi?id=21228

dodji at redhat dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #1 from dodji at redhat dot com ---
This bug is hopefully fixed by commit
https://sourceware.org/git/?p=libabigail.git;a=commit;h=688d18dc71e81b98bee498ba3d3556d5814de850
in the master branch of the Git repository.

The fix will be available in the 1.0.rc7 release.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-03-07 11:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-01  0:00 [Bug default/21228] New: Cannot clone a function that is a member of a union dodji at redhat dot com
2017-01-01  0:00 ` [Bug default/21228] " 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).