Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(430)

Side by Side Diff: third_party/crashpad/crashpad/client/crashpad_client_mac.cc

Issue 2478633002: Update Crashpad to b47bf6c250c6b825dee1c5fbad9152c2c962e828 (Closed)
Patch Set: mac comment 2 Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 std::map<std::string, std::string> annotations_; 516 std::map<std::string, std::string> annotations_;
517 std::vector<std::string> arguments_; 517 std::vector<std::string> arguments_;
518 base::mac::ScopedMachReceiveRight notify_port_; 518 base::mac::ScopedMachReceiveRight notify_port_;
519 uint64_t last_start_time_; 519 uint64_t last_start_time_;
520 520
521 DISALLOW_COPY_AND_ASSIGN(HandlerStarter); 521 DISALLOW_COPY_AND_ASSIGN(HandlerStarter);
522 }; 522 };
523 523
524 } // namespace 524 } // namespace
525 525
526 CrashpadClient::CrashpadClient() 526 CrashpadClient::CrashpadClient() {
527 : exception_port_() {
528 } 527 }
529 528
530 CrashpadClient::~CrashpadClient() { 529 CrashpadClient::~CrashpadClient() {
531 } 530 }
532 531
533 bool CrashpadClient::StartHandler( 532 bool CrashpadClient::StartHandler(
534 const base::FilePath& handler, 533 const base::FilePath& handler,
535 const base::FilePath& database, 534 const base::FilePath& database,
536 const base::FilePath& metrics_dir, 535 const base::FilePath& metrics_dir,
537 const std::string& url, 536 const std::string& url,
538 const std::map<std::string, std::string>& annotations, 537 const std::map<std::string, std::string>& annotations,
539 const std::vector<std::string>& arguments, 538 const std::vector<std::string>& arguments,
540 bool restartable) { 539 bool restartable,
541 DCHECK(!exception_port_.is_valid()); 540 bool asynchronous_start) {
542
543 // The “restartable” behavior can only be selected on OS X 10.10 and later. In 541 // The “restartable” behavior can only be selected on OS X 10.10 and later. In
544 // previous OS versions, if the initial client were to crash while attempting 542 // previous OS versions, if the initial client were to crash while attempting
545 // to restart the handler, it would become an unkillable process. 543 // to restart the handler, it would become an unkillable process.
546 base::mac::ScopedMachSendRight exception_port( 544 base::mac::ScopedMachSendRight exception_port(
547 HandlerStarter::InitialStart(handler, 545 HandlerStarter::InitialStart(handler,
548 database, 546 database,
549 metrics_dir, 547 metrics_dir,
550 url, 548 url,
551 annotations, 549 annotations,
552 arguments, 550 arguments,
553 restartable && MacOSXMinorVersion() >= 10)); 551 restartable && MacOSXMinorVersion() >= 10));
554 if (!exception_port.is_valid()) { 552 if (!exception_port.is_valid()) {
555 return false; 553 return false;
556 } 554 }
557 555
558 SetHandlerMachPort(std::move(exception_port)); 556 SetHandlerMachPort(std::move(exception_port));
559 return true; 557 return true;
560 } 558 }
561 559
562 bool CrashpadClient::SetHandlerMachService(const std::string& service_name) { 560 bool CrashpadClient::SetHandlerMachService(const std::string& service_name) {
563 base::mac::ScopedMachSendRight exception_port(BootstrapLookUp(service_name)); 561 base::mac::ScopedMachSendRight exception_port(BootstrapLookUp(service_name));
564 if (!exception_port.is_valid()) { 562 if (!exception_port.is_valid()) {
565 return false; 563 return false;
566 } 564 }
567 565
568 SetHandlerMachPort(std::move(exception_port)); 566 SetHandlerMachPort(std::move(exception_port));
569 return true; 567 return true;
570 } 568 }
571 569
572 void CrashpadClient::SetHandlerMachPort( 570 bool CrashpadClient::SetHandlerMachPort(
573 base::mac::ScopedMachSendRight exception_port) { 571 base::mac::ScopedMachSendRight exception_port) {
574 DCHECK(exception_port.is_valid()); 572 DCHECK(exception_port.is_valid());
575 exception_port_ = std::move(exception_port); 573 return SetCrashExceptionPorts(exception_port.get());
576 }
577
578 bool CrashpadClient::UseHandler() {
579 DCHECK(exception_port_.is_valid());
580
581 return SetCrashExceptionPorts(exception_port_.get());
582 } 574 }
583 575
584 // static 576 // static
585 void CrashpadClient::UseSystemDefaultHandler() { 577 void CrashpadClient::UseSystemDefaultHandler() {
586 base::mac::ScopedMachSendRight 578 base::mac::ScopedMachSendRight
587 system_crash_reporter_handler(SystemCrashReporterHandler()); 579 system_crash_reporter_handler(SystemCrashReporterHandler());
588 580
589 // Proceed even if SystemCrashReporterHandler() failed, setting MACH_PORT_NULL 581 // Proceed even if SystemCrashReporterHandler() failed, setting MACH_PORT_NULL
590 // to clear the current exception ports. 582 // to clear the current exception ports.
591 if (!SetCrashExceptionPorts(system_crash_reporter_handler.get())) { 583 if (!SetCrashExceptionPorts(system_crash_reporter_handler.get())) {
592 SetCrashExceptionPorts(MACH_PORT_NULL); 584 SetCrashExceptionPorts(MACH_PORT_NULL);
593 } 585 }
594 } 586 }
595 587
596 } // namespace crashpad 588 } // namespace crashpad
OLDNEW
« no previous file with comments | « third_party/crashpad/crashpad/client/crashpad_client.h ('k') | third_party/crashpad/crashpad/client/crashpad_client_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698