Fix race in background index-cache writing
authorTom Tromey <tom@tromey.com>
Fri, 24 Mar 2023 21:53:22 +0000 (15:53 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 31 Mar 2023 14:40:11 +0000 (08:40 -0600)
commit6f214d0f399847b13f979651c3b46befcbb42140
tree07c6fe221bbe2eb79cf5cddfdeb0b3c9a3c520b4
parent03d83cd5f55abef6a8e6b8e1811cb86f8a05d616
Fix race in background index-cache writing

Tom de Vries pointed out a bug in the index-cache background writer --
sometimes it will fail.  He also noted that it fails when the number
of worker threads is set to zero.  These turn out to be the same
problem -- the cache can't be written to until the per-BFD's
"index_table" member is set.

This patch avoids the race by rearranging the code slightly, to ensure
the cache cannot possibly be written before the member is set.

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