[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug default/21228] New: Cannot clone a function that is a member of a union
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.