diff options
-rw-r--r-- | lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp index 0f79034bb7c..98dd9df5914 100644 --- a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp +++ b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp @@ -2062,7 +2062,12 @@ ProcessMonitor::ServeOperation(OperationArgs *args) for(;;) { // wait for next pending operation - sem_wait(&monitor->m_operation_pending); + if (sem_wait(&monitor->m_operation_pending)) + { + if (errno == EINTR) + continue; + assert(false && "Unexpected errno from sem_wait"); + } monitor->m_operation->Execute(monitor); @@ -2082,7 +2087,12 @@ ProcessMonitor::DoOperation(Operation *op) sem_post(&m_operation_pending); // wait for operation to complete - sem_wait(&m_operation_done); + while (sem_wait(&m_operation_done)) + { + if (errno == EINTR) + continue; + assert(false && "Unexpected errno from sem_wait"); + } } size_t |