When building gdb with O0 fsanitize=thread, and running test-case gdb.base/add-symbol-file-attach.exp, I get two threadsanitizer warnings: ... (gdb) PASS: gdb.base/add-symbol-file-attach.exp: add-symbol-file before attach attach 523063 Attaching to process 523063 Load new symbol table from "/home/vries/gdb/build/gdb/testsuite/outputs/gdb.base/add-symbol-file-attach/add-symbol-file-attach"? (y or n) y Reading symbols from /home/vries/gdb/build/gdb/testsuite/outputs/gdb.base/add-symbol-file-attach/add-symbol-file-attach... ================== [1m[31mWARNING: ThreadSanitizer: data race (pid=523068) [1m[0m[1m[34m Write of size 1 at 0xfffff041edf8 by main thread: [1m[0m #0 std::_Optional_payload_base<std::unique_ptr<dwz_file, std::default_delete<dwz_file> > >::_M_destroy() /usr/include/c++/13/optional:286 (gdb+0x81709c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #1 std::_Optional_payload_base<std::unique_ptr<dwz_file, std::default_delete<dwz_file> > >::_M_reset() /usr/include/c++/13/optional:318 (gdb+0x816c38) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #2 std::_Optional_base_impl<std::unique_ptr<dwz_file, std::default_delete<dwz_file> >, std::_Optional_base<std::unique_ptr<dwz_file, std::default_delete<dwz_file> >, false, false> >::_M_reset() /usr/include/c++/13/optional:468 (gdb+0x8166ec) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #3 std::enable_if<is_constructible_v<std::unique_ptr<dwz_file, std::default_delete<dwz_file> >, decltype(nullptr)>, std::unique_ptr<dwz_file, std::default_delete<dwz_file> >&>::type std::optional<std::unique_ptr<dwz_file, std::default_delete<dwz_file> > >::emplace<decltype(nullptr)>(decltype(nullptr)&&) /usr/include/c++/13/optional:917 (gdb+0x816144) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #4 dwarf2_read_dwz_file(dwarf2_per_objfile*) /home/vries/gdb/src/gdb/dwarf2/dwz.c:192 (gdb+0x81536c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #5 dwarf2_initialize_objfile(objfile*, dwarf2_debug_sections const*, bool) /home/vries/gdb/src/gdb/dwarf2/read.c:3215 (gdb+0x898b6c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #6 elf_symfile_read_dwarf2 /home/vries/gdb/src/gdb/elfread.c:1201 (gdb+0x92f8c4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #7 elf_symfile_read /home/vries/gdb/src/gdb/elfread.c:1313 (gdb+0x92fc1c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #8 read_symbols /home/vries/gdb/src/gdb/symfile.c:772 (gdb+0xf474f4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #9 syms_from_objfile_1 /home/vries/gdb/src/gdb/symfile.c:964 (gdb+0xf47c84) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #10 syms_from_objfile /home/vries/gdb/src/gdb/symfile.c:981 (gdb+0xf47d58) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #11 symbol_file_add_with_addrs /home/vries/gdb/src/gdb/symfile.c:1084 (gdb+0xf4822c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #12 symbol_file_add_from_bfd(gdb::ref_ptr<bfd, gdb_bfd_ref_policy> const&, char const*, enum_flags<symfile_add_flag>, std::vector<other_sections, std::allocator<other_sections> >*, enum_flags<objfile_flag>, objfile*) /home/vries/gdb/src/gdb/symfile.c:1158 (gdb+0xf485a8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #13 symbol_file_add(char const*, enum_flags<symfile_add_flag>, std::vector<other_sections, std::allocator<other_sections> >*, enum_flags<objfile_flag>) /home/vries/gdb/src/gdb/symfile.c:1171 (gdb+0xf48634) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #14 symbol_file_add_main_1 /home/vries/gdb/src/gdb/symfile.c:1195 (gdb+0xf48748) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #15 symbol_file_add_main(char const*, enum_flags<symfile_add_flag>) /home/vries/gdb/src/gdb/symfile.c:1186 (gdb+0xf486c4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #16 try_open_exec_file(char const*, inferior*, enum_flags<symfile_add_flag>) /home/vries/gdb/src/gdb/exec.c:200 (gdb+0x945ebc) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #17 exec_file_locate_attach(int, int, int) /home/vries/gdb/src/gdb/exec.c:344 (gdb+0x9466f8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #18 setup_inferior(int) /home/vries/gdb/src/gdb/infcmd.c:2522 (gdb+0xa7d47c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #19 attach_post_wait /home/vries/gdb/src/gdb/infcmd.c:2561 (gdb+0xa7d534) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #20 operator() /home/vries/gdb/src/gdb/infcmd.c:2736 (gdb+0xa7d800) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #21 __invoke_impl<void, attach_command(char const*, int)::<lambda()>&> /usr/include/c++/13/bits/invoke.h:61 (gdb+0xa80ac0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #22 __invoke_r<void, attach_command(char const*, int)::<lambda()>&> /usr/include/c++/13/bits/invoke.h:111 (gdb+0xa80438) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #23 _M_invoke /usr/include/c++/13/bits/std_function.h:290 (gdb+0xa7fed8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #24 std::function<void ()>::operator()() const /usr/include/c++/13/bits/std_function.h:591 (gdb+0x70c308) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #25 inferior::do_all_continuations() /home/vries/gdb/src/gdb/inferior.c:200 (gdb+0xa8395c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #26 inferior_event_handler(inferior_event_type) /home/vries/gdb/src/gdb/inf-loop.c:58 (gdb+0xa6a7dc) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #27 fetch_inferior_event() /home/vries/gdb/src/gdb/infrun.c:4716 (gdb+0xa9b1d0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #28 inferior_event_handler(inferior_event_type) /home/vries/gdb/src/gdb/inf-loop.c:42 (gdb+0xa6a734) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #29 handle_target_event /home/vries/gdb/src/gdb/linux-nat.c:4357 (gdb+0xb0cb4c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #30 handle_file_event /home/vries/gdb/src/gdbsupport/event-loop.cc:573 (gdb+0x1cf5678) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #31 gdb_wait_for_event /home/vries/gdb/src/gdbsupport/event-loop.cc:694 (gdb+0x1cf5d3c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #32 gdb_do_one_event(int) /home/vries/gdb/src/gdbsupport/event-loop.cc:217 (gdb+0x1cf3ee8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #33 start_event_loop /home/vries/gdb/src/gdb/main.c:408 (gdb+0xb79354) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #34 captured_command_loop /home/vries/gdb/src/gdb/main.c:472 (gdb+0xb79584) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #35 captured_main /home/vries/gdb/src/gdb/main.c:1342 (gdb+0xb7b99c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #36 gdb_main(captured_main_args*) /home/vries/gdb/src/gdb/main.c:1361 (gdb+0xb7ba4c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #37 main /home/vries/gdb/src/gdb/gdb.c:39 (gdb+0x423ce8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) [1m[34m Previous read of size 1 at 0xfffff041edf8 by thread T4: [1m[0m #0 std::_Optional_base_impl<std::unique_ptr<dwz_file, std::default_delete<dwz_file> >, std::_Optional_base<std::unique_ptr<dwz_file, std::default_delete<dwz_file> >, false, false> >::_M_is_engaged() const <null> (gdb+0x816a08) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #1 std::optional<std::unique_ptr<dwz_file, std::default_delete<dwz_file> > >::has_value() const /usr/include/c++/13/optional:988 (gdb+0x816514) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #2 dwarf2_get_dwz_file(dwarf2_per_bfd*, bool) /home/vries/gdb/src/gdb/dwarf2/dwz.c:287 (gdb+0x815b98) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #3 create_all_units(dwarf2_per_objfile*) /home/vries/gdb/src/gdb/dwarf2/read.c:5188 (gdb+0x89fda8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #4 cooked_index_worker::do_reading() /home/vries/gdb/src/gdb/dwarf2/read.c:4925 (gdb+0x89ec44) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #5 cooked_index_worker::start_reading() /home/vries/gdb/src/gdb/dwarf2/read.c:4911 (gdb+0x89ea8c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #6 operator() /home/vries/gdb/src/gdb/dwarf2/read.c:4849 (gdb+0x89e4f0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #7 __invoke_impl<void, cooked_index_worker::start()::<lambda()>&> /usr/include/c++/13/bits/invoke.h:61 (gdb+0x8deb58) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #8 __invoke_r<void, cooked_index_worker::start()::<lambda()>&> /usr/include/c++/13/bits/invoke.h:111 (gdb+0x8ddb60) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #9 _M_invoke /usr/include/c++/13/bits/std_function.h:290 (gdb+0x8dada0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #10 std::function<void ()>::operator()() const /usr/include/c++/13/bits/std_function.h:591 (gdb+0x70c308) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #11 void std::__invoke_impl<void, std::function<void ()>&>(std::__invoke_other, std::function<void ()>&) /usr/include/c++/13/bits/invoke.h:61 (gdb+0x810db4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #12 std::enable_if<is_invocable_r_v<void, std::function<void ()>&>, void>::type std::__invoke_r<void, std::function<void ()>&>(std::function<void ()>&) /usr/include/c++/13/bits/invoke.h:111 (gdb+0x810ad4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #13 std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}::operator()() const /usr/include/c++/13/future:1491 (gdb+0x8107a0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #14 std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>::operator()() const /usr/include/c++/13/future:1432 (gdb+0x811998) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #15 std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter> std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&>(std::__invoke_other, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&) /usr/include/c++/13/bits/invoke.h:61 (gdb+0x811734) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #16 std::enable_if<is_invocable_r_v<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&>, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> >::type std::__invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&>(std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&) /usr/include/c++/13/bits/invoke.h:116 (gdb+0x811284) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #17 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void> >::_M_invoke(std::_Any_data const&) /usr/include/c++/13/bits/std_function.h:291 (gdb+0x810eb8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #18 std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/include/c++/13/bits/std_function.h:591 (gdb+0x7fd404) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #19 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/include/c++/13/future:589 (gdb+0x7fb8c0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #20 void std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/13/bits/invoke.h:74 (gdb+0x802ff8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #21 std::__invoke_result<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>::type std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/13/bits/invoke.h:96 (gdb+0x7fff6c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #22 std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}::operator()() const <null> (gdb+0x7fcf64) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #23 std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::{lambda()#1}::operator()() const /usr/include/c++/13/mutex:836 (gdb+0x7fffe8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #24 std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::{lambda()#1}::_FUN() /usr/include/c++/13/mutex:836 (gdb+0x800034) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #25 pthread_once <null> (libtsan.so.2+0x66d3c) (BuildId: fe872cc4563474b7ad67d63a019aa94e1e0df888) #26 __gthread_once /usr/include/c++/13/aarch64-redhat-linux/bits/gthr-default.h:700 (gdb+0x7faef0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #27 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) <null> (gdb+0x7fd02c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #28 std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/include/c++/13/future:428 (gdb+0x7fb4f8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #29 std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run() /usr/include/c++/13/future:1494 (gdb+0x810834) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #30 std::packaged_task<void ()>::operator()() /usr/include/c++/13/future:1628 (gdb+0x1d0f4a0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #31 gdb::thread_pool::thread_function() /home/vries/gdb/src/gdbsupport/thread-pool.cc:246 (gdb+0x1d0e820) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #32 void std::__invoke_impl<void, void (gdb::thread_pool::*)(), gdb::thread_pool*>(std::__invoke_memfun_deref, void (gdb::thread_pool::*&&)(), gdb::thread_pool*&&) /usr/include/c++/13/bits/invoke.h:74 (gdb+0x1d12968) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #33 std::__invoke_result<void (gdb::thread_pool::*)(), gdb::thread_pool*>::type std::__invoke<void (gdb::thread_pool::*)(), gdb::thread_pool*>(void (gdb::thread_pool::*&&)(), gdb::thread_pool*&&) /usr/include/c++/13/bits/invoke.h:96 (gdb+0x1d12804) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #34 void std::thread::_Invoker<std::tuple<void (gdb::thread_pool::*)(), gdb::thread_pool*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/include/c++/13/bits/std_thread.h:292 (gdb+0x1d126e4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #35 std::thread::_Invoker<std::tuple<void (gdb::thread_pool::*)(), gdb::thread_pool*> >::operator()() /usr/include/c++/13/bits/std_thread.h:299 (gdb+0x1d1266c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #36 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (gdb::thread_pool::*)(), gdb::thread_pool*> > >::_M_run() /usr/include/c++/13/bits/std_thread.h:244 (gdb+0x1d12618) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #37 execute_native_thread_routine <null> (libstdc++.so.6+0xdda9c) (BuildId: 93e3778007c3847dd08373eb42577dc85c8750e4) [1m[32m Location is heap block of size 1144 at 0xfffff041ea00 allocated by main thread: [1m[0m #0 operator new(unsigned long) <null> (libtsan.so.2+0x901f8) (BuildId: fe872cc4563474b7ad67d63a019aa94e1e0df888) #1 dwarf2_has_info /home/vries/gdb/src/gdb/dwarf2/read.c:1390 (gdb+0x891fac) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #2 dwarf2_initialize_objfile(objfile*, dwarf2_debug_sections const*, bool) /home/vries/gdb/src/gdb/dwarf2/read.c:3203 (gdb+0x898ae4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #3 elf_symfile_read_dwarf2 /home/vries/gdb/src/gdb/elfread.c:1201 (gdb+0x92f8c4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #4 elf_symfile_read /home/vries/gdb/src/gdb/elfread.c:1313 (gdb+0x92fc1c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #5 read_symbols /home/vries/gdb/src/gdb/symfile.c:772 (gdb+0xf474f4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #6 syms_from_objfile_1 /home/vries/gdb/src/gdb/symfile.c:964 (gdb+0xf47c84) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #7 syms_from_objfile /home/vries/gdb/src/gdb/symfile.c:981 (gdb+0xf47d58) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #8 symbol_file_add_with_addrs /home/vries/gdb/src/gdb/symfile.c:1084 (gdb+0xf4822c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #9 symbol_file_add_from_bfd(gdb::ref_ptr<bfd, gdb_bfd_ref_policy> const&, char const*, enum_flags<symfile_add_flag>, std::vector<other_sections, std::allocator<other_sections> >*, enum_flags<objfile_flag>, objfile*) /home/vries/gdb/src/gdb/symfile.c:1158 (gdb+0xf485a8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #10 symbol_file_add(char const*, enum_flags<symfile_add_flag>, std::vector<other_sections, std::allocator<other_sections> >*, enum_flags<objfile_flag>) /home/vries/gdb/src/gdb/symfile.c:1171 (gdb+0xf48634) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #11 add_symbol_file_command /home/vries/gdb/src/gdb/symfile.c:2372 (gdb+0xf4bde8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #12 do_simple_func /home/vries/gdb/src/gdb/cli/cli-decode.c:95 (gdb+0x6e444c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #13 cmd_func(cmd_list_element*, char const*, int) /home/vries/gdb/src/gdb/cli/cli-decode.c:2735 (gdb+0x6ebb88) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #14 execute_command(char const*, int) /home/vries/gdb/src/gdb/top.c:575 (gdb+0xff748c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #15 command_handler(char const*) /home/vries/gdb/src/gdb/event-top.c:566 (gdb+0x942488) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #16 command_line_handler(std::unique_ptr<char, gdb::xfree_deleter<char> >&&) /home/vries/gdb/src/gdb/event-top.c:802 (gdb+0x942bc0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #17 tui_command_line_handler /home/vries/gdb/src/gdb/tui/tui-interp.c:104 (gdb+0x10365f8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #18 gdb_rl_callback_handler /home/vries/gdb/src/gdb/event-top.c:259 (gdb+0x941884) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #19 rl_callback_read_char /home/vries/gdb/src/readline/readline/callback.c:290 (gdb+0x11a2c7c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #20 gdb_rl_callback_read_char_wrapper_noexcept /home/vries/gdb/src/gdb/event-top.c:195 (gdb+0x9415f8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #21 gdb_rl_callback_read_char_wrapper /home/vries/gdb/src/gdb/event-top.c:234 (gdb+0x941720) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #22 stdin_event_handler /home/vries/gdb/src/gdb/ui.c:155 (gdb+0x1079320) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #23 handle_file_event /home/vries/gdb/src/gdbsupport/event-loop.cc:573 (gdb+0x1cf5678) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #24 gdb_wait_for_event /home/vries/gdb/src/gdbsupport/event-loop.cc:694 (gdb+0x1cf5d3c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #25 gdb_do_one_event(int) /home/vries/gdb/src/gdbsupport/event-loop.cc:264 (gdb+0x1cf4074) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #26 start_event_loop /home/vries/gdb/src/gdb/main.c:408 (gdb+0xb79354) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #27 captured_command_loop /home/vries/gdb/src/gdb/main.c:472 (gdb+0xb79584) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #28 captured_main /home/vries/gdb/src/gdb/main.c:1342 (gdb+0xb7b99c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #29 gdb_main(captured_main_args*) /home/vries/gdb/src/gdb/main.c:1361 (gdb+0xb7ba4c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #30 main /home/vries/gdb/src/gdb/gdb.c:39 (gdb+0x423ce8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) [1m[36m Thread T4 'gdb worker' (tid=523078, running) created by main thread at: [1m[0m #0 pthread_create <null> (libtsan.so.2+0x4605c) (BuildId: fe872cc4563474b7ad67d63a019aa94e1e0df888) #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xddbe4) (BuildId: 93e3778007c3847dd08373eb42577dc85c8750e4) #2 gdb::thread_pool::set_thread_count(unsigned long) /home/vries/gdb/src/gdbsupport/thread-pool.cc:169 (gdb+0x1d0e4b4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #3 update_thread_pool_size() /home/vries/gdb/src/gdb/maint.c:866 (gdb+0xb87c70) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #4 captured_main_1 /home/vries/gdb/src/gdb/main.c:1062 (gdb+0xb7a8a4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #5 captured_main /home/vries/gdb/src/gdb/main.c:1332 (gdb+0xb7b998) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #6 gdb_main(captured_main_args*) /home/vries/gdb/src/gdb/main.c:1361 (gdb+0xb7ba4c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #7 main /home/vries/gdb/src/gdb/gdb.c:39 (gdb+0x423ce8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) SUMMARY: ThreadSanitizer: data race /usr/include/c++/13/optional:286 in std::_Optional_payload_base<std::unique_ptr<dwz_file, std::default_delete<dwz_file> > >::_M_destroy() ================== ================== [1m[31mWARNING: ThreadSanitizer: data race (pid=523068) [1m[0m[1m[34m Write of size 8 at 0xfffff041edf0 by main thread: [1m[0m #0 std::unique_ptr<dwz_file, std::default_delete<dwz_file> >::~unique_ptr() /usr/include/c++/13/bits/unique_ptr.h:405 (gdb+0x816304) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #1 std::_Optional_payload_base<std::unique_ptr<dwz_file, std::default_delete<dwz_file> > >::_M_destroy() /usr/include/c++/13/optional:287 (gdb+0x8170ac) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #2 std::_Optional_payload_base<std::unique_ptr<dwz_file, std::default_delete<dwz_file> > >::_M_reset() /usr/include/c++/13/optional:318 (gdb+0x816c38) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #3 std::_Optional_base_impl<std::unique_ptr<dwz_file, std::default_delete<dwz_file> >, std::_Optional_base<std::unique_ptr<dwz_file, std::default_delete<dwz_file> >, false, false> >::_M_reset() /usr/include/c++/13/optional:468 (gdb+0x8166ec) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #4 std::enable_if<is_constructible_v<std::unique_ptr<dwz_file, std::default_delete<dwz_file> >, decltype(nullptr)>, std::unique_ptr<dwz_file, std::default_delete<dwz_file> >&>::type std::optional<std::unique_ptr<dwz_file, std::default_delete<dwz_file> > >::emplace<decltype(nullptr)>(decltype(nullptr)&&) /usr/include/c++/13/optional:917 (gdb+0x816144) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #5 dwarf2_read_dwz_file(dwarf2_per_objfile*) /home/vries/gdb/src/gdb/dwarf2/dwz.c:192 (gdb+0x81536c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #6 dwarf2_initialize_objfile(objfile*, dwarf2_debug_sections const*, bool) /home/vries/gdb/src/gdb/dwarf2/read.c:3215 (gdb+0x898b6c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #7 elf_symfile_read_dwarf2 /home/vries/gdb/src/gdb/elfread.c:1201 (gdb+0x92f8c4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #8 elf_symfile_read /home/vries/gdb/src/gdb/elfread.c:1313 (gdb+0x92fc1c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #9 read_symbols /home/vries/gdb/src/gdb/symfile.c:772 (gdb+0xf474f4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #10 syms_from_objfile_1 /home/vries/gdb/src/gdb/symfile.c:964 (gdb+0xf47c84) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #11 syms_from_objfile /home/vries/gdb/src/gdb/symfile.c:981 (gdb+0xf47d58) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #12 symbol_file_add_with_addrs /home/vries/gdb/src/gdb/symfile.c:1084 (gdb+0xf4822c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #13 symbol_file_add_from_bfd(gdb::ref_ptr<bfd, gdb_bfd_ref_policy> const&, char const*, enum_flags<symfile_add_flag>, std::vector<other_sections, std::allocator<other_sections> >*, enum_flags<objfile_flag>, objfile*) /home/vries/gdb/src/gdb/symfile.c:1158 (gdb+0xf485a8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #14 symbol_file_add(char const*, enum_flags<symfile_add_flag>, std::vector<other_sections, std::allocator<other_sections> >*, enum_flags<objfile_flag>) /home/vries/gdb/src/gdb/symfile.c:1171 (gdb+0xf48634) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #15 symbol_file_add_main_1 /home/vries/gdb/src/gdb/symfile.c:1195 (gdb+0xf48748) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #16 symbol_file_add_main(char const*, enum_flags<symfile_add_flag>) /home/vries/gdb/src/gdb/symfile.c:1186 (gdb+0xf486c4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #17 try_open_exec_file(char const*, inferior*, enum_flags<symfile_add_flag>) /home/vries/gdb/src/gdb/exec.c:200 (gdb+0x945ebc) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #18 exec_file_locate_attach(int, int, int) /home/vries/gdb/src/gdb/exec.c:344 (gdb+0x9466f8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #19 setup_inferior(int) /home/vries/gdb/src/gdb/infcmd.c:2522 (gdb+0xa7d47c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #20 attach_post_wait /home/vries/gdb/src/gdb/infcmd.c:2561 (gdb+0xa7d534) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #21 operator() /home/vries/gdb/src/gdb/infcmd.c:2736 (gdb+0xa7d800) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #22 __invoke_impl<void, attach_command(char const*, int)::<lambda()>&> /usr/include/c++/13/bits/invoke.h:61 (gdb+0xa80ac0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #23 __invoke_r<void, attach_command(char const*, int)::<lambda()>&> /usr/include/c++/13/bits/invoke.h:111 (gdb+0xa80438) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #24 _M_invoke /usr/include/c++/13/bits/std_function.h:290 (gdb+0xa7fed8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #25 std::function<void ()>::operator()() const /usr/include/c++/13/bits/std_function.h:591 (gdb+0x70c308) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #26 inferior::do_all_continuations() /home/vries/gdb/src/gdb/inferior.c:200 (gdb+0xa8395c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #27 inferior_event_handler(inferior_event_type) /home/vries/gdb/src/gdb/inf-loop.c:58 (gdb+0xa6a7dc) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #28 fetch_inferior_event() /home/vries/gdb/src/gdb/infrun.c:4716 (gdb+0xa9b1d0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #29 inferior_event_handler(inferior_event_type) /home/vries/gdb/src/gdb/inf-loop.c:42 (gdb+0xa6a734) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #30 handle_target_event /home/vries/gdb/src/gdb/linux-nat.c:4357 (gdb+0xb0cb4c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #31 handle_file_event /home/vries/gdb/src/gdbsupport/event-loop.cc:573 (gdb+0x1cf5678) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #32 gdb_wait_for_event /home/vries/gdb/src/gdbsupport/event-loop.cc:694 (gdb+0x1cf5d3c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #33 gdb_do_one_event(int) /home/vries/gdb/src/gdbsupport/event-loop.cc:217 (gdb+0x1cf3ee8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #34 start_event_loop /home/vries/gdb/src/gdb/main.c:408 (gdb+0xb79354) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #35 captured_command_loop /home/vries/gdb/src/gdb/main.c:472 (gdb+0xb79584) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #36 captured_main /home/vries/gdb/src/gdb/main.c:1342 (gdb+0xb7b99c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #37 gdb_main(captured_main_args*) /home/vries/gdb/src/gdb/main.c:1361 (gdb+0xb7ba4c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #38 main /home/vries/gdb/src/gdb/gdb.c:39 (gdb+0x423ce8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) [1m[34m Previous read of size 8 at 0xfffff041edf0 by thread T4: [1m[0m #0 std::__uniq_ptr_impl<dwz_file, std::default_delete<dwz_file> >::_M_ptr() const <null> (gdb+0x8169c0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #1 std::unique_ptr<dwz_file, std::default_delete<dwz_file> >::get() const /usr/include/c++/13/bits/unique_ptr.h:470 (gdb+0x816394) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #2 dwarf2_get_dwz_file(dwarf2_per_bfd*, bool) /home/vries/gdb/src/gdb/dwarf2/dwz.c:289 (gdb+0x815bb8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #3 create_all_units(dwarf2_per_objfile*) /home/vries/gdb/src/gdb/dwarf2/read.c:5188 (gdb+0x89fda8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #4 cooked_index_worker::do_reading() /home/vries/gdb/src/gdb/dwarf2/read.c:4925 (gdb+0x89ec44) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #5 cooked_index_worker::start_reading() /home/vries/gdb/src/gdb/dwarf2/read.c:4911 (gdb+0x89ea8c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #6 operator() /home/vries/gdb/src/gdb/dwarf2/read.c:4849 (gdb+0x89e4f0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #7 __invoke_impl<void, cooked_index_worker::start()::<lambda()>&> /usr/include/c++/13/bits/invoke.h:61 (gdb+0x8deb58) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #8 __invoke_r<void, cooked_index_worker::start()::<lambda()>&> /usr/include/c++/13/bits/invoke.h:111 (gdb+0x8ddb60) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #9 _M_invoke /usr/include/c++/13/bits/std_function.h:290 (gdb+0x8dada0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #10 std::function<void ()>::operator()() const /usr/include/c++/13/bits/std_function.h:591 (gdb+0x70c308) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #11 void std::__invoke_impl<void, std::function<void ()>&>(std::__invoke_other, std::function<void ()>&) /usr/include/c++/13/bits/invoke.h:61 (gdb+0x810db4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #12 std::enable_if<is_invocable_r_v<void, std::function<void ()>&>, void>::type std::__invoke_r<void, std::function<void ()>&>(std::function<void ()>&) /usr/include/c++/13/bits/invoke.h:111 (gdb+0x810ad4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #13 std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}::operator()() const /usr/include/c++/13/future:1491 (gdb+0x8107a0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #14 std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>::operator()() const /usr/include/c++/13/future:1432 (gdb+0x811998) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #15 std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter> std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&>(std::__invoke_other, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&) /usr/include/c++/13/bits/invoke.h:61 (gdb+0x811734) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #16 std::enable_if<is_invocable_r_v<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&>, std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> >::type std::__invoke_r<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&>(std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void>&) /usr/include/c++/13/bits/invoke.h:116 (gdb+0x811284) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #17 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run()::{lambda()#1}, void> >::_M_invoke(std::_Any_data const&) /usr/include/c++/13/bits/std_function.h:291 (gdb+0x810eb8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #18 std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/include/c++/13/bits/std_function.h:591 (gdb+0x7fd404) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #19 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/include/c++/13/future:589 (gdb+0x7fb8c0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #20 void std::__invoke_impl<void, void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::__invoke_memfun_deref, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/13/bits/invoke.h:74 (gdb+0x802ff8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #21 std::__invoke_result<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>::type std::__invoke<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/13/bits/invoke.h:96 (gdb+0x7fff6c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #22 std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}::operator()() const <null> (gdb+0x7fcf64) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #23 std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::{lambda()#1}::operator()() const /usr/include/c++/13/mutex:836 (gdb+0x7fffe8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #24 std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)::{lambda()#1}>(void (std::__future_base::_State_baseV2::*&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*))::{lambda()#1}::_FUN() /usr/include/c++/13/mutex:836 (gdb+0x800034) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #25 pthread_once <null> (libtsan.so.2+0x66d3c) (BuildId: fe872cc4563474b7ad67d63a019aa94e1e0df888) #26 __gthread_once /usr/include/c++/13/aarch64-redhat-linux/bits/gthr-default.h:700 (gdb+0x7faef0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #27 void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) <null> (gdb+0x7fd02c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #28 std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/include/c++/13/future:428 (gdb+0x7fb4f8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #29 std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>, void ()>::_M_run() /usr/include/c++/13/future:1494 (gdb+0x810834) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #30 std::packaged_task<void ()>::operator()() /usr/include/c++/13/future:1628 (gdb+0x1d0f4a0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #31 gdb::thread_pool::thread_function() /home/vries/gdb/src/gdbsupport/thread-pool.cc:246 (gdb+0x1d0e820) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #32 void std::__invoke_impl<void, void (gdb::thread_pool::*)(), gdb::thread_pool*>(std::__invoke_memfun_deref, void (gdb::thread_pool::*&&)(), gdb::thread_pool*&&) /usr/include/c++/13/bits/invoke.h:74 (gdb+0x1d12968) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #33 std::__invoke_result<void (gdb::thread_pool::*)(), gdb::thread_pool*>::type std::__invoke<void (gdb::thread_pool::*)(), gdb::thread_pool*>(void (gdb::thread_pool::*&&)(), gdb::thread_pool*&&) /usr/include/c++/13/bits/invoke.h:96 (gdb+0x1d12804) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #34 void std::thread::_Invoker<std::tuple<void (gdb::thread_pool::*)(), gdb::thread_pool*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/include/c++/13/bits/std_thread.h:292 (gdb+0x1d126e4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #35 std::thread::_Invoker<std::tuple<void (gdb::thread_pool::*)(), gdb::thread_pool*> >::operator()() /usr/include/c++/13/bits/std_thread.h:299 (gdb+0x1d1266c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #36 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (gdb::thread_pool::*)(), gdb::thread_pool*> > >::_M_run() /usr/include/c++/13/bits/std_thread.h:244 (gdb+0x1d12618) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #37 execute_native_thread_routine <null> (libstdc++.so.6+0xdda9c) (BuildId: 93e3778007c3847dd08373eb42577dc85c8750e4) [1m[32m Location is heap block of size 1144 at 0xfffff041ea00 allocated by main thread: [1m[0m #0 operator new(unsigned long) <null> (libtsan.so.2+0x901f8) (BuildId: fe872cc4563474b7ad67d63a019aa94e1e0df888) #1 dwarf2_has_info /home/vries/gdb/src/gdb/dwarf2/read.c:1390 (gdb+0x891fac) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #2 dwarf2_initialize_objfile(objfile*, dwarf2_debug_sections const*, bool) /home/vries/gdb/src/gdb/dwarf2/read.c:3203 (gdb+0x898ae4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #3 elf_symfile_read_dwarf2 /home/vries/gdb/src/gdb/elfread.c:1201 (gdb+0x92f8c4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #4 elf_symfile_read /home/vries/gdb/src/gdb/elfread.c:1313 (gdb+0x92fc1c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #5 read_symbols /home/vries/gdb/src/gdb/symfile.c:772 (gdb+0xf474f4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #6 syms_from_objfile_1 /home/vries/gdb/src/gdb/symfile.c:964 (gdb+0xf47c84) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #7 syms_from_objfile /home/vries/gdb/src/gdb/symfile.c:981 (gdb+0xf47d58) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #8 symbol_file_add_with_addrs /home/vries/gdb/src/gdb/symfile.c:1084 (gdb+0xf4822c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #9 symbol_file_add_from_bfd(gdb::ref_ptr<bfd, gdb_bfd_ref_policy> const&, char const*, enum_flags<symfile_add_flag>, std::vector<other_sections, std::allocator<other_sections> >*, enum_flags<objfile_flag>, objfile*) /home/vries/gdb/src/gdb/symfile.c:1158 (gdb+0xf485a8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #10 symbol_file_add(char const*, enum_flags<symfile_add_flag>, std::vector<other_sections, std::allocator<other_sections> >*, enum_flags<objfile_flag>) /home/vries/gdb/src/gdb/symfile.c:1171 (gdb+0xf48634) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #11 add_symbol_file_command /home/vries/gdb/src/gdb/symfile.c:2372 (gdb+0xf4bde8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #12 do_simple_func /home/vries/gdb/src/gdb/cli/cli-decode.c:95 (gdb+0x6e444c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #13 cmd_func(cmd_list_element*, char const*, int) /home/vries/gdb/src/gdb/cli/cli-decode.c:2735 (gdb+0x6ebb88) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #14 execute_command(char const*, int) /home/vries/gdb/src/gdb/top.c:575 (gdb+0xff748c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #15 command_handler(char const*) /home/vries/gdb/src/gdb/event-top.c:566 (gdb+0x942488) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #16 command_line_handler(std::unique_ptr<char, gdb::xfree_deleter<char> >&&) /home/vries/gdb/src/gdb/event-top.c:802 (gdb+0x942bc0) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #17 tui_command_line_handler /home/vries/gdb/src/gdb/tui/tui-interp.c:104 (gdb+0x10365f8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #18 gdb_rl_callback_handler /home/vries/gdb/src/gdb/event-top.c:259 (gdb+0x941884) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #19 rl_callback_read_char /home/vries/gdb/src/readline/readline/callback.c:290 (gdb+0x11a2c7c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #20 gdb_rl_callback_read_char_wrapper_noexcept /home/vries/gdb/src/gdb/event-top.c:195 (gdb+0x9415f8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #21 gdb_rl_callback_read_char_wrapper /home/vries/gdb/src/gdb/event-top.c:234 (gdb+0x941720) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #22 stdin_event_handler /home/vries/gdb/src/gdb/ui.c:155 (gdb+0x1079320) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #23 handle_file_event /home/vries/gdb/src/gdbsupport/event-loop.cc:573 (gdb+0x1cf5678) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #24 gdb_wait_for_event /home/vries/gdb/src/gdbsupport/event-loop.cc:694 (gdb+0x1cf5d3c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #25 gdb_do_one_event(int) /home/vries/gdb/src/gdbsupport/event-loop.cc:264 (gdb+0x1cf4074) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #26 start_event_loop /home/vries/gdb/src/gdb/main.c:408 (gdb+0xb79354) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #27 captured_command_loop /home/vries/gdb/src/gdb/main.c:472 (gdb+0xb79584) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #28 captured_main /home/vries/gdb/src/gdb/main.c:1342 (gdb+0xb7b99c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #29 gdb_main(captured_main_args*) /home/vries/gdb/src/gdb/main.c:1361 (gdb+0xb7ba4c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #30 main /home/vries/gdb/src/gdb/gdb.c:39 (gdb+0x423ce8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) [1m[36m Thread T4 'gdb worker' (tid=523078, running) created by main thread at: [1m[0m #0 pthread_create <null> (libtsan.so.2+0x4605c) (BuildId: fe872cc4563474b7ad67d63a019aa94e1e0df888) #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0xddbe4) (BuildId: 93e3778007c3847dd08373eb42577dc85c8750e4) #2 gdb::thread_pool::set_thread_count(unsigned long) /home/vries/gdb/src/gdbsupport/thread-pool.cc:169 (gdb+0x1d0e4b4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #3 update_thread_pool_size() /home/vries/gdb/src/gdb/maint.c:866 (gdb+0xb87c70) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #4 captured_main_1 /home/vries/gdb/src/gdb/main.c:1062 (gdb+0xb7a8a4) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #5 captured_main /home/vries/gdb/src/gdb/main.c:1332 (gdb+0xb7b998) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #6 gdb_main(captured_main_args*) /home/vries/gdb/src/gdb/main.c:1361 (gdb+0xb7ba4c) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) #7 main /home/vries/gdb/src/gdb/gdb.c:39 (gdb+0x423ce8) (BuildId: 6dc308d9bc2da51d7adf979315fabd66fb46e8a3) SUMMARY: ThreadSanitizer: data race /usr/include/c++/13/bits/unique_ptr.h:405 in std::unique_ptr<dwz_file, std::default_delete<dwz_file> >::~unique_ptr() ================== Reading symbols from /lib64/libm.so.6... Reading symbols from .gnu_debugdata for /lib64/libm.so.6... (No debugging symbols found in .gnu_debugdata for /lib64/libm.so.6) Reading symbols from /lib64/libc.so.6... (No debugging symbols found in /lib64/libc.so.6) Reading symbols from /lib/ld-linux-aarch64.so.1... [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". 0x0000ffff46a7a404 in pause () from /lib64/libc.so.6 (gdb) PASS: gdb.base/add-symbol-file-attach.exp: attach ...
Also triggers in gdb.mi/new-ui-bp-deleted.exp.
Bisects to: ... commit 33c6eaaefcedd45e86d564d014f14cce2620f933 (HEAD) Author: Tom Tromey <tom@tromey.com> Date: Fri Mar 24 23:35:02 2023 -0600 Do more DWARF reading in the background ...
I guess a race could happen if we open the same ELF twice. Then the second call to dwarf2_initialize_objfile could race -- calling dwarf2_read_dwz_file while the reading of the first one is being done.
I was able to reproduce this one and I have a fix that I'll send soon.
https://sourceware.org/pipermail/gdb-patches/2024-January/206216.html
The master branch has been updated by Tom Tromey <tromey@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e9b738dfbdc504589e1a365ce32981f4b23c22c3 commit e9b738dfbdc504589e1a365ce32981f4b23c22c3 Author: Tom Tromey <tom@tromey.com> Date: Thu Jan 25 06:48:22 2024 -0700 Avoid race when reading dwz file PR gdb/31260 points out a race introduced by the background reading changes. If a given objfile is re-opened when it is already being read, dwarf2_initialize_objfile will call dwarf2_read_dwz_file again, causing the 'dwz_file' to be reset. This patch fixes the problem by arranging to open the dwz just once: when the dwarf2_per_bfd object is created. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31260
Fixed.