Index: /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp	(revision 38034)
+++ /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp	(revision 38035)
@@ -518,5 +518,21 @@
         return;
 
-    Assert(pCritSect->s.Core.NativeThreadOwner == pdmCritSectGetNativeSelf(pCritSect));
+    /*
+     * Always check that the caller is the owner (screw performance).
+     */
+    RTNATIVETHREAD const hNativeSelf = pdmCritSectGetNativeSelf(pCritSect);
+    if (RT_UNLIKELY(pCritSect->s.Core.NativeThreadOwner != hNativeSelf))
+    {
+#if 0
+        AssertMsgFailed(("%p %s: %p != %p; cLockers=%d cNestings=%d\n", pCritSect, R3STRING(pCritSect->s.pszName),
+                         pCritSect->s.Core.NativeThreadOwner, hNativeSelf,
+                         pCritSect->s.Core.cLockers, pCritSect->s.Core.cNestings));
+#else
+        AssertReleaseMsgFailed(("%p %s: %p != %p; cLockers=%d cNestings=%d\n", pCritSect, R3STRING(pCritSect->s.pszName),
+                                pCritSect->s.Core.NativeThreadOwner, hNativeSelf,
+                                pCritSect->s.Core.cLockers, pCritSect->s.Core.cNestings));
+#endif
+        return;
+    }
     Assert(pCritSect->s.Core.cNestings >= 1);
 
