Index: /trunk/src/VBox/Devices/Audio/AudioMixer.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/AudioMixer.cpp	(revision 78505)
+++ /trunk/src/VBox/Devices/Audio/AudioMixer.cpp	(revision 78506)
@@ -779,13 +779,12 @@
 
         default:
-            rc = VERR_NOT_IMPLEMENTED;
+            AssertFailedStmt(rc = VERR_NOT_IMPLEMENTED);
             break;
     }
 
-#ifdef LOG_ENABLED
     char *pszStatus = dbgAudioMixerSinkStatusToStr(pSink->fStatus);
-    LogFlowFunc(("[%s] enmCmd=%d, fStatus=%s, rc=%Rrc\n", pSink->pszName, enmSinkCmd, pszStatus, rc));
+    LogRel2(("Mixer: Set new status of sink '%s' to %s\n", pSink->pszName, pszStatus));
+    LogFlowFunc(("[%s] enmCmd=%RU32, fStatus=%s, rc=%Rrc\n", pSink->pszName, enmSinkCmd, pszStatus, rc));
     RTStrFree(pszStatus);
-#endif
 
     int rc2 = RTCritSectLeave(&pSink->CritSect);
@@ -2012,8 +2011,6 @@
               ("%s: Can't write to a sink which is not an output sink\n", pSink->pszName));
 
-    Assert(cbBuf <= AudioMixBufFreeBytes(&pSink->MixBuf));
-
     uint32_t cbWritten = 0;
-    uint32_t cbToWrite = cbBuf;
+    uint32_t cbToWrite = RT_MIN(AudioMixBufFreeBytes(&pSink->MixBuf), cbBuf);
     while (cbToWrite)
     {
@@ -2032,5 +2029,5 @@
     }
 
-    Assert(cbWritten == cbBuf);
+    Log3Func(("[%s] cbBuf=%RU32 -> cbWritten=%RU32\n", pSink->pszName, cbBuf, cbWritten));
 
     /* Update the sink's last written time stamp. */
Index: /trunk/src/VBox/Devices/Audio/DevIchAc97.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevIchAc97.cpp	(revision 78505)
+++ /trunk/src/VBox/Devices/Audio/DevIchAc97.cpp	(revision 78506)
@@ -1215,5 +1215,6 @@
         RTCircBufReleaseReadBlock(pCircBuf, cbWritten);
 
-        if (RT_FAILURE(rc))
+        if (   !cbWritten /* Nothing written? */
+            || RT_FAILURE(rc))
             break;
 
@@ -1550,5 +1551,5 @@
             {
                 /* Read (guest output) data and write it to the stream's sink. */
-                rc2 = ichac97R3StreamRead(pThis, pStream, pSink, cbToReadFromStream, NULL);
+                rc2 = ichac97R3StreamRead(pThis, pStream, pSink, cbToReadFromStream, NULL /* pcbRead */);
                 AssertRC(rc2);
             }
Index: /trunk/src/VBox/Devices/Audio/HDAStream.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/HDAStream.cpp	(revision 78505)
+++ /trunk/src/VBox/Devices/Audio/HDAStream.cpp	(revision 78506)
@@ -873,5 +873,6 @@
         RTCircBufReleaseReadBlock(pCircBuf, cbWritten);
 
-        if (RT_FAILURE(rc))
+        if (   !cbWritten /* Nothing written? */
+            || RT_FAILURE(rc))
             break;
 
@@ -1483,5 +1484,5 @@
             {
                 /* Read (guest output) data and write it to the stream's sink. */
-                rc2 = hdaR3StreamRead(pStream, cbToReadFromStream, NULL);
+                rc2 = hdaR3StreamRead(pStream, cbToReadFromStream, NULL /* pcbRead */);
                 AssertRC(rc2);
             }
