Index: /trunk/src/VBox/Devices/Audio/DrvAudio.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DrvAudio.cpp	(revision 87853)
+++ /trunk/src/VBox/Devices/Audio/DrvAudio.cpp	(revision 87854)
@@ -2955,7 +2955,9 @@
              * Reading the actual data from a stream then will return silence then.
              */
-            if (  !DrvAudioHlpStreamStatusCanRead(
-                      pThis->pHostDrvAudio->pfnStreamGetStatus(pThis->pHostDrvAudio, pStream->pvBackend)
-                || fDisabled))
+            PDMAUDIOSTREAMSTS fStatus = PDMAUDIOSTREAMSTS_FLAGS_NONE;
+            if (pThis->pHostDrvAudio->pfnStreamGetStatus)
+                fStatus = pThis->pHostDrvAudio->pfnStreamGetStatus(pThis->pHostDrvAudio, pStream->pvBackend);
+            if (   !DrvAudioHlpStreamStatusCanRead(fStatus)
+                || fDisabled)
             {
                 cbReadable = DrvAudioHlpNanoToBytes(RTTimeNanoTS() - pStream->tsLastReadWrittenNs,
@@ -2963,5 +2965,6 @@
                 if (!(pStream->fWarningsShown & PDMAUDIOSTREAM_WARN_FLAGS_DISABLED))
                 {
-                    LogRel(("Audio: Stream '%s' not ready or driver has disabled audio input, returning silence\n", pStream->szName));
+                    LogRel(("Audio: Warning: Stream '%s' not ready or driver has disabled audio input (stream status is %#x, VM input status is %s), returning silence\n",
+                            pStream->szName, fStatus, fDisabled ? "disabled" : "enabled"));
                     pStream->fWarningsShown |= PDMAUDIOSTREAM_WARN_FLAGS_DISABLED;
                 }
@@ -2970,5 +2973,6 @@
 
         /* Make sure to align the readable size to the guest's frame size. */
-        cbReadable = DrvAudioHlpBytesAlign(cbReadable, &pStream->Guest.Cfg.Props);
+        if (cbReadable)
+            cbReadable = DrvAudioHlpBytesAlign(cbReadable, &pStream->Guest.Cfg.Props);
     }
 
