Index: /trunk/src/VBox/Runtime/r3/posix/localipc-posix.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/posix/localipc-posix.cpp	(revision 58293)
+++ /trunk/src/VBox/Runtime/r3/posix/localipc-posix.cpp	(revision 58294)
@@ -42,4 +42,5 @@
 #include <iprt/socket.h>
 #include <iprt/string.h>
+#include <iprt/time.h>
 
 #include <sys/types.h>
@@ -835,4 +836,6 @@
         {
             pThis->hReadThread = RTThreadSelf();
+            uint64_t const msStart = RTTimeMilliTS();
+            RTMSINTERVAL const cMsOriginalTimeout = cMillies;
 
             for (;;)
@@ -882,5 +885,13 @@
                     else if (   rc == VERR_INTERRUPTED
                              || rc == VERR_TRY_AGAIN)
+                    {
+                        /* Recalc cMillies. */
+                        if (cMsOriginalTimeout != RT_INDEFINITE_WAIT)
+                        {
+                            uint64_t cMsElapsed = RTTimeMilliTS() - msStart;
+                            cMillies = cMsElapsed >= cMsOriginalTimeout ? 0 : cMsOriginalTimeout - (RTMSINTERVAL)cMsElapsed;
+                        }
                         continue;
+                    }
                 }
                 else
