[Lldb-commits] [lldb] r124012 - /lldb/trunk/tools/debugserver/source/MacOSX/MachTask.cpp

Jim Ingham jingham at apple.com
Fri Jan 21 17:22:51 PST 2011


Author: jingham
Date: Fri Jan 21 19:22:51 2011
New Revision: 124012

URL: http://llvm.org/viewvc/llvm-project?rev=124012&view=rev
Log:
Add a (currently disabled) bear trap where instead of deallocating pages, we remove all permissions.

Modified:
    lldb/trunk/tools/debugserver/source/MacOSX/MachTask.cpp

Modified: lldb/trunk/tools/debugserver/source/MacOSX/MachTask.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/debugserver/source/MacOSX/MachTask.cpp?rev=124012&r1=124011&r2=124012&view=diff
==============================================================================
--- lldb/trunk/tools/debugserver/source/MacOSX/MachTask.cpp (original)
+++ lldb/trunk/tools/debugserver/source/MacOSX/MachTask.cpp Fri Jan 21 19:22:51 2011
@@ -626,7 +626,7 @@
     if (err.Error() == KERN_SUCCESS)
     {
         // Set the protections:
-        vm_prot_t mach_prot = 0;
+        vm_prot_t mach_prot = VM_PROT_NONE;
         if (permissions & eMemoryPermissionsReadable)
             mach_prot |= VM_PROT_READ;
         if (permissions & eMemoryPermissionsWritable)
@@ -663,7 +663,14 @@
         if ((*pos).first == addr)
         {
             m_allocations.erase(pos);
-            return ::mach_vm_deallocate (task, (*pos).first, (*pos).second) == KERN_SUCCESS;
+#define ALWAYS_ZOMBIE_ALLOCATIONS 0
+            if (ALWAYS_ZOMBIE_ALLOCATIONS || getenv ("DEBUGSERVER_ZOMBIE_ALLOCATIONS"))
+            {
+                ::mach_vm_protect (task, (*pos).first, (*pos).second, 0, VM_PROT_NONE);
+                return true;
+            }
+            else
+                return ::mach_vm_deallocate (task, (*pos).first, (*pos).second) == KERN_SUCCESS;
         }
         
     }





More information about the lldb-commits mailing list