Index: third_party/crashpad/crashpad/handler/mac/exception_handler_server.cc |
diff --git a/third_party/crashpad/crashpad/handler/mac/exception_handler_server.cc b/third_party/crashpad/crashpad/handler/mac/exception_handler_server.cc |
index 38a016e9d817dd20d0b0ad4959311b737108df18..3f30e03a1d50bc9f0638bf983133da486a0f59e3 100644 |
--- a/third_party/crashpad/crashpad/handler/mac/exception_handler_server.cc |
+++ b/third_party/crashpad/crashpad/handler/mac/exception_handler_server.cc |
@@ -105,7 +105,14 @@ class ExceptionHandlerServerRun : public UniversalMachExcServer::Interface, |
MachMessageServer::kOneShot, |
MachMessageServer::kReceiveLargeIgnore, |
kMachMessageTimeoutWaitIndefinitely); |
- MACH_CHECK(mr == MACH_MSG_SUCCESS, mr) << "MachMessageServer::Run"; |
+ |
+ // MACH_SEND_INVALID_DEST occurs when attempting to reply to a dead name. |
+ // This can happen if a mach_exc or exc client disappears before a reply |
+ // can be sent to it. That’s unusal for kernel-generated requests, but can |
+ // easily happen if a task sends its own exception request (as |
+ // SimulateCrash() does) and dies before the reply is sent. |
+ MACH_CHECK(mr == MACH_MSG_SUCCESS || mr == MACH_SEND_INVALID_DEST, mr) |
+ << "MachMessageServer::Run"; |
} |
} |