Index: src/VBox/Devices/Audio/pulseaudio.c
===================================================================
--- src/VBox/Devices/Audio/pulseaudio.c	(revision 25738)
+++ src/VBox/Devices/Audio/pulseaudio.c	(working copy)
@@ -277,12 +277,12 @@
 
     if (fIn)
     {
-        LogRel(("Pulse: Obtained buffer attributes for recording: maxlength=%d fragsize=%d\n",
+        LogRel(("Pulse:  Obtained record buffer attributes: maxlength=%d fragsize=%d\n",
             pBufAttr->maxlength, pBufAttr->fragsize));
     }
     else
     {
-        LogRel(("Pulse: Obtained buffer attributes for playback: maxlength=%d tlength=%d prebuf=%d minreq=%d\n",
+        LogRel(("Pulse:  Obtained playback buffer attributes: maxlength=%d tlength=%d prebuf=%d minreq=%d\n",
             pBufAttr->maxlength, pBufAttr->tlength, pBufAttr->prebuf, pBufAttr->minreq));
     }
 
@@ -555,6 +555,18 @@
     cFramesAvail = pa_stream_readable_size(pPulse->pStream) >> hwshift;
     pa_threaded_mainloop_unlock(g_pMainLoop);
 
+    if (cFramesAvail == -1)
+    {
+        if (pPulse->cErrors < MAX_LOG_REL_ERRORS)
+        {
+            int rc = pa_context_errno(g_pContext);
+            pPulse->cErrors++;
+            LogRel(("Pulse: Failed to determine the readable size: %s\n",
+                     pa_strerror(rc)));
+        }
+        return 0;
+    }
+
     /* If the buffer was not dropped last call, add what remains */
     if (pPulse->pu8PeekBuf)
         cFramesAvail += (pPulse->cbPeekBuf - pPulse->offPeekBuf) >> hwshift;
