Index: /trunk/src/VBox/Devices/Audio/AudioMixBuffer.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/AudioMixBuffer.cpp	(revision 64651)
+++ /trunk/src/VBox/Devices/Audio/AudioMixBuffer.cpp	(revision 64652)
@@ -1014,6 +1014,20 @@
     uint32_t offDstWrite  = pDst->offWrite;
 
+    // Updated code causes tstAudioMixBuffer to fail. Problem is failing the call
+    // when source has no available data, which can apparently happen. See #8521.
+#if 0
     if (!cSrcAvail)
+    {
         return VERR_NO_DATA;
+    }
+#else
+    if (   !cSrcAvail
+        || !cDstAvail)
+    {
+        if (pcProcessed)
+            *pcProcessed = 0;
+        return VINF_SUCCESS;
+    }
+#endif
 
     AUDMIXBUF_LOG(("cSrcSamples=%RU32, cSrcAvail=%RU32 -> cDstAvail=%RU32\n", cSrcSamples,  cSrcAvail, cDstAvail));
