Index: /trunk/src/VBox/Runtime/r0drv/darwin/memobj-r0drv-darwin.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r0drv/darwin/memobj-r0drv-darwin.cpp	(revision 41068)
+++ /trunk/src/VBox/Runtime/r0drv/darwin/memobj-r0drv-darwin.cpp	(revision 41069)
@@ -426,4 +426,9 @@
      * The kIOMemoryKernelUserShared flag just forces the result to be page aligned.
      */
+#if 1 /** @todo Figure out why this is broken. Is it only on snow leopard? Seen allocating memory for the VM structure, last page corrupted or inaccessible. */
+    size_t const cbFudged = cb + PAGE_SIZE;
+#else
+    size_t const cbFudged = cb;
+#endif
     int rc;
     IOBufferMemoryDescriptor *pMemDesc =
@@ -432,5 +437,5 @@
                                                          | kIODirectionInOut
                                                          | (fContiguous ? kIOMemoryPhysicallyContiguous : 0),
-                                                         cb,
+                                                         cbFudged,
                                                          PhysMask);
     if (pMemDesc)
@@ -439,5 +444,5 @@
         if (IORet == kIOReturnSuccess)
         {
-            void *pv = pMemDesc->getBytesNoCopy(0, cb);
+            void *pv = pMemDesc->getBytesNoCopy(0, cbFudged);
             if (pv)
             {
Index: /trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp	(revision 41068)
+++ /trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp	(revision 41069)
@@ -821,9 +821,5 @@
                         const uint32_t  cbVM   = RT_UOFFSETOF(VM, aCpus[cCpus]);
                         const uint32_t  cPages = RT_ALIGN_32(cbVM, PAGE_SIZE) >> PAGE_SHIFT;
-#ifdef RT_OS_DARWIN /** @todo Figure out why this is broken. Is it only on snow leopard? */
-                        rc = RTR0MemObjAllocLow(&pGVM->gvmm.s.VMMemObj, (cPages + 1) << PAGE_SHIFT, false /* fExecutable */);
-#else
                         rc = RTR0MemObjAllocLow(&pGVM->gvmm.s.VMMemObj, cPages << PAGE_SHIFT, false /* fExecutable */);
-#endif
                         if (RT_SUCCESS(rc))
                         {
