Index: /trunk/src/VBox/VMM/VMMR3/VMM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/VMM.cpp	(revision 38844)
+++ /trunk/src/VBox/VMM/VMMR3/VMM.cpp	(revision 38845)
@@ -1459,5 +1459,4 @@
 {
     int rc;
-    pVCpu->vmm.s.fInRendezvous = true;
 
     /*
@@ -1608,5 +1607,4 @@
     }
 
-    pVCpu->vmm.s.fInRendezvous = false;
     if (!fIsCaller)
         return vmmR3EmtRendezvousNonCallerReturn(pVM);
@@ -1628,6 +1626,10 @@
 VMMR3_INT_DECL(int) VMMR3EmtRendezvousFF(PVM pVM, PVMCPU pVCpu)
 {
-    return vmmR3EmtRendezvousCommon(pVM, pVCpu, false /* fIsCaller */, pVM->vmm.s.fRendezvousFlags,
-                                    pVM->vmm.s.pfnRendezvous, pVM->vmm.s.pvRendezvousUser);
+    Assert(!pVCpu->vmm.s.fInRendezvous);
+    pVCpu->vmm.s.fInRendezvous = true;
+    int rc = vmmR3EmtRendezvousCommon(pVM, pVCpu, false /* fIsCaller */, pVM->vmm.s.fRendezvousFlags,
+                                      pVM->vmm.s.pfnRendezvous, pVM->vmm.s.pvRendezvousUser);
+    pVCpu->vmm.s.fInRendezvous = false;
+    return rc;
 }
 
@@ -1708,4 +1710,6 @@
         }
         Assert(!VM_FF_ISPENDING(pVM, VM_FF_EMT_RENDEZVOUS));
+        Assert(!pVCpu->vmm.s.fInRendezvous);
+        pVCpu->vmm.s.fInRendezvous = true;
 
         /*
@@ -1755,4 +1759,5 @@
 
         ASMAtomicWriteU32(&pVM->vmm.s.u32RendezvousLock, 0);
+        pVCpu->vmm.s.fInRendezvous = false;
 
         /*
