[lldb] Fix ThreadedCommunication races
authorPavel Labath <pavel@labath.sk>
Wed, 7 Sep 2022 09:25:44 +0000 (11:25 +0200)
committerPavel Labath <pavel@labath.sk>
Fri, 9 Sep 2022 13:10:38 +0000 (15:10 +0200)
commit89a3691b794cee20187e14a750ecde8b6d3f7e71
treef2088d71e56b2f3d90e9f30dbc08992a8d6c86be
parent05f56f10ed84dc56bb4fb686c4630aeb4dcbca0b
[lldb] Fix ThreadedCommunication races

The Read function could end up blocking if data (or EOF) arrived just as
it was about to start waiting for the events. This was only discovered
now, because we did not have unit tests for this functionality before.
We need to check for data *after* we start listening for incoming
events. There were no changes to the read thread code needed, as we
already use this pattern in SynchronizeWithReadThread, so I just updated
the comments to make it clear that it is used for reading as well.

Differential Revision: https://reviews.llvm.org/D133410
lldb/source/Core/ThreadedCommunication.cpp