Index: /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp	(revision 30327)
+++ /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp	(revision 30328)
@@ -91,4 +91,5 @@
 
     ASMAtomicWriteS32(&pCritSect->s.Core.cNestings, 1);
+    Assert(pCritSect->s.Core.cNestings == 1);
     ASMAtomicWriteHandle(&pCritSect->s.Core.NativeThreadOwner, hNativeSelf);
 
@@ -171,4 +172,5 @@
 {
     Assert(pCritSect->s.Core.cNestings < 8);  /* useful to catch incorrect locking */
+    Assert(pCritSect->s.Core.cNestings >= 0);
 
     /*
@@ -192,4 +194,5 @@
         ASMAtomicIncS32(&pCritSect->s.Core.cLockers);
         ASMAtomicIncS32(&pCritSect->s.Core.cNestings);
+        Assert(pCritSect->s.Core.cNestings > 1);
         ASMAtomicAndU32(&pCritSect->s.Core.fFlags, ~PDMCRITSECT_FLAGS_PENDING_UNLOCK);
         return VINF_SUCCESS;
@@ -313,4 +316,5 @@
         ASMAtomicIncS32(&pCritSect->s.Core.cLockers);
         ASMAtomicIncS32(&pCritSect->s.Core.cNestings);
+        Assert(pCritSect->s.Core.cNestings > 1);
         ASMAtomicAndU32(&pCritSect->s.Core.fFlags, ~PDMCRITSECT_FLAGS_PENDING_UNLOCK);
         return VINF_SUCCESS;
@@ -423,4 +427,5 @@
     {
         ASMAtomicDecS32(&pCritSect->s.Core.cNestings);
+        Assert(pCritSect->s.Core.cNestings >= 1);
         ASMAtomicDecS32(&pCritSect->s.Core.cLockers);
         return;
@@ -452,4 +457,5 @@
         ASMAtomicWriteHandle(&pCritSect->s.Core.NativeThreadOwner, NIL_RTNATIVETHREAD);
         ASMAtomicDecS32(&pCritSect->s.Core.cNestings);
+        Assert(pCritSect->s.Core.cNestings == 0);
 
         /* stop and decrement lockers. */
@@ -502,4 +508,5 @@
             ASMAtomicWriteHandle(&pCritSect->s.Core.NativeThreadOwner, hNativeThread);
             STAM_PROFILE_ADV_START(&pCritSect->s.StatLocked, l);
+            Assert(pCritSect->s.Core.cNestings == 0);
             ASMAtomicWriteS32(&pCritSect->s.Core.cNestings, 1);
         }
