Fix race in DAP startup
authorTom Tromey <tromey@adacore.com>
Tue, 21 Mar 2023 14:35:09 +0000 (08:35 -0600)
committerTom Tromey <tromey@adacore.com>
Fri, 24 Mar 2023 13:30:09 +0000 (07:30 -0600)
commit4460691252d5c345f0b34ac366639df23c687832
tree356ee9d7adf9463aed72394489681d8740878c5b
parentef1398987a132769779679fd9ffd353dce840f95
Fix race in DAP startup

Internal AdaCore DAP testing on Windows has had occasional failures
that show:

    assert threading.current_thread() is _dap_thread

I think this is a race in DAP startup: the _dap_thread global is only
set on return from start_thread, but it seems possible that the thread
itself could already run and encounter a @in_dap_thread decorator.

This patch fixes the problem by setting the global before running any
of the code in the new thread.  This also lets us remove a FIXME.
gdb/python/lib/gdb/dap/server.py
gdb/python/lib/gdb/dap/startup.py