Author: Pavel Labath Date: 2023-09-08T10:17:16+02:00 New Revision: d4c3c2872ff6acd75ee3e0083fa62b2a1cc5310c
URL: https://github.com/llvm/llvm-project/commit/d4c3c2872ff6acd75ee3e0083fa62b2a1cc5310c DIFF: https://github.com/llvm/llvm-project/commit/d4c3c2872ff6acd75ee3e0083fa62b2a1cc5310c.diff LOG: [lldb] Fix Process::SyncIOHandler D157648 broke the function because it put the blocking wait into a critical section. This meant that, if m_iohandler_sync was not updated before entering the function, no amount of waiting would help. Fix that by restriciting the scope of the critical section to the iohandler check. Added: Modified: lldb/source/Target/Process.cpp Removed: ################################################################################ diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 9555ff717859472..2b0774588138881 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -627,8 +627,7 @@ void Process::SyncIOHandler(uint32_t iohandler_id, const Timeout<std::micro> &timeout) { // don't sync (potentially context switch) in case where there is no process // IO - std::lock_guard<std::mutex> guard(m_process_input_reader_mutex); - if (!m_process_input_reader) + if (!ProcessIOHandlerExists()) return; auto Result = m_iohandler_sync.WaitForValueNotEqualTo(iohandler_id, timeout); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits