]>
git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
[gdb/symtab] Fix data race in get_die_type_at_offset
Data race between:
...
==================
WARNING: ThreadSanitizer: data race (pid=28142)
Read of size 4 at 0x7b1c0004b978 by thread T2:
#0 htab_find_with_hash libiberty/hashtab.c:591 (gdb+0x1c5a254)
#1 htab_find libiberty/hashtab.c:621 (gdb+0x1c5a44d)
#2 get_die_type_at_offset gdb/dwarf2/read.c:23877 (gdb+0x872004)
#3 get_die_type gdb/dwarf2/read.c:23890 (gdb+0x8720d0)
#4 read_type_die gdb/dwarf2/read.c:21460 (gdb+0x8698e4)
#5 process_die gdb/dwarf2/read.c:8674 (gdb+0x839f6e)
#6 read_file_scope gdb/dwarf2/read.c:9610 (gdb+0x83ca5d)
#7 process_die gdb/dwarf2/read.c:8614 (gdb+0x839e1f)
#8 process_full_comp_unit gdb/dwarf2/read.c:8383 (gdb+0x83945e)
#9 process_queue_item gdb/dwarf2/read.c:7592 (gdb+0x83597d)
...
and:
...
Previous write of size 4 at 0x7b1c0004b978 by thread T1:
#0 htab_find_with_hash libiberty/hashtab.c:591 (gdb+0x1c5a26e)
#1 htab_find libiberty/hashtab.c:621 (gdb+0x1c5a44d)
#2 get_die_type_at_offset gdb/dwarf2/read.c:23877 (gdb+0x872004)
#3 get_die_type gdb/dwarf2/read.c:23890 (gdb+0x8720d0)
#4 process_structure_scope gdb/dwarf2/read.c:14845 (gdb+0x851c12)
#5 process_die gdb/dwarf2/read.c:8643 (gdb+0x839f24)
#6 read_file_scope gdb/dwarf2/read.c:9610 (gdb+0x83ca5d)
#7 process_die gdb/dwarf2/read.c:8614 (gdb+0x839e1f)
#8 process_full_comp_unit gdb/dwarf2/read.c:8383 (gdb+0x83945e)
#9 process_queue_item gdb/dwarf2/read.c:7592 (gdb+0x83597d)
...
Fix by using lock, also in set_die_type.