Fix crash on Linux if sem_wait() is interrupted.

Patch by Andrew MacPherson.

llvm-svn: 200049
diff --git a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp
index 0f79034..98dd9df 100644
--- a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp
+++ b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp
@@ -2062,7 +2062,12 @@
     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 @@
     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