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

Unified Diff: third_party/crashpad/crashpad/handler/mac/crash_report_exception_handler.cc

Issue 2350943003: Update Crashpad to 0aeca5f12374fdbf3d4f6c656abf950ba2a96f1c (Closed)
Patch Set: . Created 4 years, 3 months 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 side-by-side diff with in-line comments
Download patch
Index: third_party/crashpad/crashpad/handler/mac/crash_report_exception_handler.cc
diff --git a/third_party/crashpad/crashpad/handler/mac/crash_report_exception_handler.cc b/third_party/crashpad/crashpad/handler/mac/crash_report_exception_handler.cc
index 288148e9947093df6a7eb914bfb4d52fef36de7b..2a115623856388337c81d49e6b032d2ee8016ced 100644
--- a/third_party/crashpad/crashpad/handler/mac/crash_report_exception_handler.cc
+++ b/third_party/crashpad/crashpad/handler/mac/crash_report_exception_handler.cc
@@ -32,6 +32,7 @@
#include "util/mach/mach_message.h"
#include "util/mach/scoped_task_suspend.h"
#include "util/mach/symbolic_constants_mach.h"
+#include "util/misc/metrics.h"
#include "util/misc/tri_state.h"
#include "util/misc/uuid.h"
@@ -64,6 +65,8 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
mach_msg_type_number_t* new_state_count,
const mach_msg_trailer_t* trailer,
bool* destroy_complex_request) {
+ Metrics::ExceptionEncountered();
+ Metrics::ExceptionCode(exception);
*destroy_complex_request = true;
// The expected behavior is EXCEPTION_STATE_IDENTITY | MACH_EXCEPTION_CODES,
@@ -74,6 +77,8 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
"unexpected exception behavior %s, rejecting",
ExceptionBehaviorToString(
behavior, kUseFullName | kUnknownIsNumeric | kUseOr).c_str());
+ Metrics::ExceptionCaptureResult(
+ Metrics::CaptureResult::kUnexpectedExceptionBehavior);
return KERN_FAILURE;
} else if (behavior != (EXCEPTION_STATE_IDENTITY | kMachExceptionCodes)) {
LOG(WARNING) << base::StringPrintf(
@@ -84,6 +89,8 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
if (task == mach_task_self()) {
LOG(ERROR) << "cannot suspend myself";
+ Metrics::ExceptionCaptureResult(
+ Metrics::CaptureResult::kFailedDueToSuspendSelf);
return KERN_FAILURE;
}
@@ -91,6 +98,7 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
ProcessSnapshotMac process_snapshot;
if (!process_snapshot.Initialize(task)) {
+ Metrics::ExceptionCaptureResult(Metrics::CaptureResult::kSnapshotFailed);
return KERN_FAILURE;
}
@@ -126,6 +134,8 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
*flavor,
old_state,
old_state_count)) {
+ Metrics::ExceptionCaptureResult(
+ Metrics::CaptureResult::kExceptionInitializationFailed);
return KERN_FAILURE;
}
@@ -145,6 +155,8 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
CrashReportDatabase::OperationStatus database_status =
database_->PrepareNewCrashReport(&new_report);
if (database_status != CrashReportDatabase::kNoError) {
+ Metrics::ExceptionCaptureResult(
+ Metrics::CaptureResult::kPrepareNewCrashReportFailed);
return KERN_FAILURE;
}
@@ -158,6 +170,8 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
MinidumpFileWriter minidump;
minidump.InitializeFromSnapshot(&process_snapshot);
if (!minidump.WriteEverything(&file_writer)) {
+ Metrics::ExceptionCaptureResult(
+ Metrics::CaptureResult::kMinidumpWriteFailed);
return KERN_FAILURE;
}
@@ -166,6 +180,8 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
UUID uuid;
database_status = database_->FinishedWritingCrashReport(new_report, &uuid);
if (database_status != CrashReportDatabase::kNoError) {
+ Metrics::ExceptionCaptureResult(
+ Metrics::CaptureResult::kFinishedWritingCrashReportFailed);
return KERN_FAILURE;
}
@@ -223,6 +239,7 @@ kern_return_t CrashReportExceptionHandler::CatchMachException(
ExcServerCopyState(
behavior, old_state, old_state_count, new_state, new_state_count);
+ Metrics::ExceptionCaptureResult(Metrics::CaptureResult::kSuccess);
return ExcServerSuccessfulReturnValue(exception, behavior, false);
}
« no previous file with comments | « third_party/crashpad/crashpad/DEPS ('k') | third_party/crashpad/crashpad/handler/win/crash_report_exception_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698