diff options
Diffstat (limited to 'source/Plugins/Process/Darwin/MachException.cpp')
| -rw-r--r-- | source/Plugins/Process/Darwin/MachException.cpp | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/source/Plugins/Process/Darwin/MachException.cpp b/source/Plugins/Process/Darwin/MachException.cpp index 9f5920753d68..353f2df32139 100644 --- a/source/Plugins/Process/Darwin/MachException.cpp +++ b/source/Plugins/Process/Darwin/MachException.cpp @@ -92,8 +92,6 @@ extern "C" kern_return_t catch_mach_exception_raise_state_identity( (uint64_t)(exc_data_count > 0 ? exc_data[0] : 0xBADDBADD), (uint64_t)(exc_data_count > 1 ? exc_data[1] : 0xBADDBADD)); } - mach_port_deallocate(mach_task_self(), task_port); - mach_port_deallocate(mach_task_self(), thread_port); return KERN_FAILURE; } @@ -249,20 +247,19 @@ bool MachException::Message::CatchExceptionRaise(task_t task) { bool success = false; state.task_port = task; g_message = &state; - // The exc_server function is the MIG generated server handling function - // to handle messages from the kernel relating to the occurrence of an - // exception in a thread. Such messages are delivered to the exception port - // set via thread_set_exception_ports or task_set_exception_ports. When an - // exception occurs in a thread, the thread sends an exception message to - // its exception port, blocking in the kernel waiting for the receipt of a - // reply. The exc_server function performs all necessary argument handling - // for this kernel message and calls catch_exception_raise, - // catch_exception_raise_state or catch_exception_raise_state_identity, - // which should handle the exception. If the called routine returns - // KERN_SUCCESS, a reply message will be sent, allowing the thread to - // continue from the point of the exception; otherwise, no reply message - // is sent and the called routine must have dealt with the exception - // thread directly. + // The exc_server function is the MIG generated server handling function to + // handle messages from the kernel relating to the occurrence of an exception + // in a thread. Such messages are delivered to the exception port set via + // thread_set_exception_ports or task_set_exception_ports. When an exception + // occurs in a thread, the thread sends an exception message to its exception + // port, blocking in the kernel waiting for the receipt of a reply. The + // exc_server function performs all necessary argument handling for this + // kernel message and calls catch_exception_raise, + // catch_exception_raise_state or catch_exception_raise_state_identity, which + // should handle the exception. If the called routine returns KERN_SUCCESS, a + // reply message will be sent, allowing the thread to continue from the point + // of the exception; otherwise, no reply message is sent and the called + // routine must have dealt with the exception thread directly. if (mach_exc_server(&exc_msg.hdr, &reply_msg.hdr)) { success = true; } else { @@ -385,9 +382,9 @@ Status MachException::PortInfo::Save(task_t task) { log->Printf("MachException::PortInfo::%s(task = 0x%4.4x)", __FUNCTION__, task); - // Be careful to be able to have debugserver built on a newer OS than what - // it is currently running on by being able to start with all exceptions - // and back off to just what is supported on the current system + // Be careful to be able to have debugserver built on a newer OS than what it + // is currently running on by being able to start with all exceptions and + // back off to just what is supported on the current system mask = LLDB_EXC_MASK; count = (sizeof(ports) / sizeof(ports[0])); |
