Index: /trunk/src/VBox/Devices/Audio/DevHDA.h
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHDA.h	(revision 68378)
+++ /trunk/src/VBox/Devices/Audio/DevHDA.h	(revision 68379)
@@ -192,6 +192,13 @@
     HDAMIXERSINK                       SinkMicIn;
 #endif
-    /** Last updated WALCLK counter. */
+    /** Last updated wall clock (WALCLK) counter. */
     uint64_t                           u64WalClk;
+#ifdef DEBUG
+    /** Wall clock (WALCLK) stale count.
+     *  This indicates the number of set wall clock
+     *  values which do not actually move the counter forward (stale). */
+    uint8_t                            u8WalClkStaleCnt;
+    uint8_t                            au8Padding2[7];
+#endif
     /** Response Interrupt Count (RINTCNT). */
     uint8_t                            u8RespIntCnt;
@@ -199,5 +206,5 @@
     uint8_t                            u8IRQL;
     /** Padding for alignment. */
-    uint8_t                            au8Padding2[6];
+    uint8_t                            au8Padding3[6];
 #ifdef DEBUG
     HDASTATEDBGINFO                    Dbg;
Index: /trunk/src/VBox/Devices/Audio/DevHDACommon.cpp
===================================================================
--- /trunk/src/VBox/Devices/Audio/DevHDACommon.cpp	(revision 68378)
+++ /trunk/src/VBox/Devices/Audio/DevHDACommon.cpp	(revision 68379)
@@ -212,7 +212,16 @@
             u64WalClk = RT_MAX(u64WalClkSet, u64MicInAbsWalClk);
 #endif
-            AssertMsg(u64WalClkSet > u64WalClkCur,
-                      ("Setting WALCLK to a stale or backward value (%RU64 -> %RU64) isn't a good idea really. "
-                       "Good luck with stuck audio stuff.\n", u64WalClkCur, u64WalClkSet));
+
+#ifdef VBOX_STRICT
+            Assert(u64WalClkSet >= u64WalClkCur); /* Setting WALCLK to a value going backwards does not make any sense. */
+            if (u64WalClkSet == u64WalClkCur)     /* Setting a stale value? */
+            {
+                if (pThis->u8WalClkStaleCnt++ > 3)
+                    AssertMsgFailed(("Setting WALCLK to a stale value (%RU64) too often isn't a good idea really. "
+                                     "Good luck with stuck audio stuff.\n", u64WalClkSet));
+            }
+            else
+                pThis->u8WalClkStaleCnt = 0;
+#endif
         }
 
