| Index: client/crashpad_client_mac.cc | 
| diff --git a/client/crashpad_client_mac.cc b/client/crashpad_client_mac.cc | 
| index d5e3545b2094a312cb185bcfab081b6f402ca515..480828be78c115d6af0e1cf48690a2c33e8dadf5 100644 | 
| --- a/client/crashpad_client_mac.cc | 
| +++ b/client/crashpad_client_mac.cc | 
| @@ -164,7 +164,8 @@ class HandlerStarter final : public NotifyServer::DefaultInterface { | 
| return base::mac::ScopedMachSendRight(); | 
| } | 
|  | 
| -    if (handler_restarter && handler_restarter->StartRestartThread( | 
| +    if (handler_restarter && | 
| +        handler_restarter->StartRestartThread( | 
| handler, database, url, annotations, arguments)) { | 
| // The thread owns the object now. | 
| ignore_result(handler_restarter.release()); | 
| @@ -245,6 +246,8 @@ class HandlerStarter final : public NotifyServer::DefaultInterface { | 
| base::mac::ScopedMachReceiveRight receive_right, | 
| HandlerStarter* handler_restarter, | 
| bool restart) { | 
| +    DCHECK(!restart || handler_restarter); | 
| + | 
| if (handler_restarter) { | 
| // The port-destroyed notification must be requested each time. It uses | 
| // a send-once right, so once the notification is received, it won’t be | 
| @@ -270,7 +273,7 @@ class HandlerStarter final : public NotifyServer::DefaultInterface { | 
| DCHECK(restart || !previous_owner.is_valid()); | 
| } | 
|  | 
| -      if (handler_restarter->last_start_time_) { | 
| +      if (restart) { | 
| // If the handler was ever started before, don’t restart it too quickly. | 
| const uint64_t kNanosecondsPerSecond = 1E9; | 
| const uint64_t kMinimumStartInterval = 1 * kNanosecondsPerSecond; | 
| @@ -279,7 +282,14 @@ class HandlerStarter final : public NotifyServer::DefaultInterface { | 
| handler_restarter->last_start_time_ + kMinimumStartInterval; | 
| const uint64_t now_time = ClockMonotonicNanoseconds(); | 
| if (earliest_next_start_time > now_time) { | 
| +          const uint64_t sleep_time = earliest_next_start_time - now_time; | 
| +          LOG(INFO) << "restarting handler" | 
| +                    << base::StringPrintf(" in %.3fs", | 
| +                                          static_cast<double>(sleep_time) / | 
| +                                              kNanosecondsPerSecond); | 
| SleepNanoseconds(earliest_next_start_time - now_time); | 
| +        } else { | 
| +          LOG(INFO) << "restarting handler"; | 
| } | 
| } | 
|  | 
| @@ -517,13 +527,13 @@ bool CrashpadClient::StartHandler( | 
| // The “restartable” behavior can only be selected on OS X 10.10 and later. In | 
| // previous OS versions, if the initial client were to crash while attempting | 
| // to restart the handler, it would become an unkillable process. | 
| -  base::mac::ScopedMachSendRight exception_port(HandlerStarter::InitialStart( | 
| -      handler, | 
| -      database, | 
| -      url, | 
| -      annotations, | 
| -      arguments, | 
| -      restartable && MacOSXMinorVersion() >= 10)); | 
| +  base::mac::ScopedMachSendRight exception_port( | 
| +      HandlerStarter::InitialStart(handler, | 
| +                                   database, | 
| +                                   url, | 
| +                                   annotations, | 
| +                                   arguments, | 
| +                                   restartable && MacOSXMinorVersion() >= 10)); | 
| if (!exception_port.is_valid()) { | 
| return false; | 
| } | 
|  |