Index: /trunk/src/VBox/Runtime/generic/critsect-generic.cpp
===================================================================
--- /trunk/src/VBox/Runtime/generic/critsect-generic.cpp	(revision 19988)
+++ /trunk/src/VBox/Runtime/generic/critsect-generic.cpp	(revision 19989)
@@ -455,5 +455,5 @@
      * In case someone is waiting we'll signal the semaphore cLockers + 1 times.
      */
-    ASMAtomicXchgU32(&pCritSect->u32Magic, 0);
+    ASMAtomicWriteU32(&pCritSect->u32Magic, ~RTCRITSECT_MAGIC);
     pCritSect->fFlags           = 0;
     pCritSect->cNestings        = 0;
@@ -463,5 +463,5 @@
     while (pCritSect->cLockers-- >= 0)
         RTSemEventSignal(EventSem);
-    ASMAtomicXchgS32(&pCritSect->cLockers, -1);
+    ASMAtomicWriteS32(&pCritSect->cLockers, -1);
     int rc = RTSemEventDestroy(EventSem);
     AssertRC(rc);
