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

Unified Diff: third_party/crashpad/crashpad/util/mach/exception_types.cc

Issue 2679313002: Update Crashpad to 88442dd5788bf7836ab013939cca4a4683560cb0 (Closed)
Patch Set: Created 3 years, 10 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/util/mach/exception_types.cc
diff --git a/third_party/crashpad/crashpad/util/mach/exception_types.cc b/third_party/crashpad/crashpad/util/mach/exception_types.cc
index d33fa9379589cc1a947ae9a7bbeca767302dd79d..e133cb9ad61902ed2dbfe290b9aa9c1a070132de 100644
--- a/third_party/crashpad/crashpad/util/mach/exception_types.cc
+++ b/third_party/crashpad/crashpad/util/mach/exception_types.cc
@@ -309,15 +309,32 @@ bool IsExceptionNonfatalResource(exception_type_t exception,
if (resource_type == RESOURCE_TYPE_MEMORY &&
resource_flavor == FLAVOR_HIGH_WATERMARK) {
- // These exceptions are never fatal. See 10.10
+ // These exceptions were never fatal prior to 10.12. See 10.10
// xnu-2782.1.97/osfmk/kern/task.c
// THIS_PROCESS_CROSSED_HIGH_WATERMARK__SENDING_EXC_RESOURCE().
+ //
+ // A superficial examination of 10.12 shows that these exceptions may be
+ // fatal, as determined by the P_MEMSTAT_FATAL_MEMLIMIT bit of the
+ // kernel-internal struct proc::p_memstat_state. See 10.12.3
+ // xnu-3789.41.3/osfmk/kern/task.c task_footprint_exceeded(). This bit is
+ // not exposed to user space, which makes it difficult to determine whether
+ // the kernel considers a given instance of this exception fatal. However, a
+ // close read reveals that it is only possible for this bit to become set
+ // when xnu-3789.41.3/bsd/kern/kern_memorystatus.c
+ // memorystatus_cmd_set_memlimit_properties() is called, which is only
+ // possible when the kernel is built with CONFIG_JETSAM set, or if the
+ // kern.memorystatus_highwater_enabled sysctl is used, which is only
+ // possible when the kernel is built with DEVELOPMENT or DEBUG set. Although
+ // CONFIG_JETSAM is used on iOS, it is not used on macOS. DEVELOPMENT and
+ // DEBUG are also not set for production kernels. It therefore remains
+ // impossible for these exceptions to be fatal, even on 10.12.
return true;
}
if (resource_type == RESOURCE_TYPE_IO) {
- // These exceptions don’t ever appear to be fatal. See
- // https://crashpad.chromium.org/bug/124.
+ // These exceptions are never fatal. See 10.12.3
+ // xnu-3789.41.3/osfmk/kern/task.c
+ // SENDING_NOTIFICATION__THIS_PROCESS_IS_CAUSING_TOO_MUCH_IO().
return true;
}

Powered by Google App Engine
This is Rietveld 408576698