Index: /trunk/src/VBox/VMM/PATM/PATM.cpp
===================================================================
--- /trunk/src/VBox/VMM/PATM/PATM.cpp	(revision 366)
+++ /trunk/src/VBox/VMM/PATM/PATM.cpp	(revision 367)
@@ -4709,5 +4709,5 @@
                         PPATCHINFO pPatch = pPatchPage->aPatch[i];
 
-                        if (++pPatch->cInvalidWrites > PATM_MAX_INVALID_WRITES)
+                        if (pPatch->cInvalidWrites > PATM_MAX_INVALID_WRITES)
                         {
                             LogRel(("PATM: Disable block at %VGv - invalid write %VGv-%VGv \n", pPatch->pPrivInstrGC, GCPtr, GCPtr+cbWrite));
Index: /trunk/src/VBox/VMM/PATM/PATMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/PATM/PATMInternal.h	(revision 366)
+++ /trunk/src/VBox/VMM/PATM/PATMInternal.h	(revision 367)
@@ -318,5 +318,5 @@
     uint32_t           cMaxPatches;
     /** Array of patch pointers for this page. */
-    PPATCHINFO        *aPatch;
+    HCPTRTYPE(PPATCHINFO *)aPatch;
 } PATMPATCHPAGE, *PPATMPATCHPAGE;
 
Index: /trunk/src/VBox/VMM/PATM/VMMGC/PATMGC.cpp
===================================================================
--- /trunk/src/VBox/VMM/PATM/VMMGC/PATMGC.cpp	(revision 366)
+++ /trunk/src/VBox/VMM/PATM/VMMGC/PATMGC.cpp	(revision 367)
@@ -125,4 +125,14 @@
             STAM_COUNTER_INC(&pVM->patm.s.StatPatchWriteInterpretedFailed);
         }
+        HCPTRTYPE(PPATCHINFO) *paPatch = (HCPTRTYPE(PPATCHINFO) *)MMHyperHC2GC(pVM, pPatchPage->aPatch);
+
+        /* Increase the invalid write counter for each patch that's registered for that page. */
+        for (uint32_t i=0;i<pPatchPage->cCount;i++)
+        {
+            PPATCHINFO pPatch = (PPATCHINFO)MMHyperHC2GC(pVM, paPatch[i]);
+
+            pPatch->cInvalidWrites++;
+        }
+
         STAM_PROFILE_ADV_STOP(&pVM->patm.s.StatPatchWriteDetect, a);
         return VINF_EM_RAW_EMULATE_INSTR;
