[gdb/symtab] Fix data race in cooked_index_functions::expand_symtabs_matching
authorTom de Vries <tdevries@suse.de>
Thu, 14 Jul 2022 18:47:54 +0000 (20:47 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 14 Jul 2022 18:47:54 +0000 (20:47 +0200)
commit7d1a572d6b5194d36a96f36b3d28ce591341deb6
treed5ef9f9263c87bed87b9117e90d5d140b3270819
parent18a5766d09c262878018af26ecbada38d7262b4d
[gdb/symtab] Fix data race in cooked_index_functions::expand_symtabs_matching

When building gdb with -fsanitize-threads and running test-case
gdb.ada/char_enum_unicode.exp, I run into:
...
WARNING: ThreadSanitizer: data race (pid=21301)^M
  Write of size 8 at 0x7b2000008080 by main thread:^M
    #0 free <null> (libtsan.so.2+0x4c5e2)^M
    #1 _dl_close_worker <null> (ld-linux-x86-64.so.2+0x4b7b)^M
    #2 convert_between_encodings() charset.c:584^M
  ...
    #21 cooked_index_functions::expand_symtabs_matching() read.c:18606
...

This is fixed by making cooked_index_functions::expand_symtabs_matching wait
for the cooked index finalization to be done.

Tested on x86_64-linux.

https://sourceware.org/bugzilla/show_bug.cgi?id=29311
https://sourceware.org/bugzilla/show_bug.cgi?id=29286
gdb/dwarf2/cooked-index.h
gdb/dwarf2/read.c