diff --git a/src/google_breakpad/common/minidump_exception_mac.h b/src/google_breakpad/common/minidump_exception_mac.h
--- a/src/google_breakpad/common/minidump_exception_mac.h
+++ b/src/google_breakpad/common/minidump_exception_mac.h
@@ -62,16 +62,18 @@ typedef enum {
   MD_EXCEPTION_MAC_BREAKPOINT      = 6,  /* code is CPU-specific */
       /* EXC_BREAKPOINT */
   MD_EXCEPTION_MAC_SYSCALL         = 7,
       /* EXC_SYSCALL */
   MD_EXCEPTION_MAC_MACH_SYSCALL    = 8,
       /* EXC_MACH_SYSCALL */
   MD_EXCEPTION_MAC_RPC_ALERT       = 9,
       /* EXC_RPC_ALERT */
+  MD_EXCEPTION_MAC_RESOURCE        = 11,
+      /* EXC_RESOURCE */
   MD_EXCEPTION_MAC_SIMULATED       = 0x43507378
       /* Fake exception code used by Crashpad's SimulateCrash ('CPsx'). */
 } MDExceptionMac;
 
 /* For (MDException).exception_flags.  Breakpad minidump extension for Mac OS X
  * support.  Based on Darwin/Mac OS X' mach/ppc/exception.h and
  * mach/i386/exception.h.  This is what Mac OS X calls a "code". */
 typedef enum {
@@ -201,9 +203,42 @@ typedef enum {
   /* EXC_I386_PGFLT     = 14: should not occur in user space */
   /* EXC_I386_EXTERRFLT = 16: mapped to EXC_ARITHMETIC/EXC_I386_EXTERR */
   MD_EXCEPTION_CODE_MAC_X86_ALIGNMENT_FAULT            = 17
       /* EXC_ALIGNFLT (for vector operations) */
   /* EXC_I386_ENOEXTFLT = 32: should be handled by the kernel */
   /* EXC_I386_ENDPERR   = 33: should not occur */
 } MDExceptionCodeMac;
 
+// The following definitions were taken from  Darwin/XNU kernel sources.
+// See https://github.com/apple/darwin-xnu/blob/main/osfmk/kern/exc_resource.h
+
+typedef enum MDMacExcResourceType {
+  MD_MAC_EXC_RESOURCE_TYPE_CPU     = 1,
+  MD_MAC_EXC_RESOURCE_TYPE_WAKEUPS = 2,
+  MD_MAC_EXC_RESOURCE_TYPE_MEMORY  = 3,
+  MD_MAC_EXC_RESOURCE_TYPE_IO      = 4,
+  MD_MAC_EXC_RESOURCE_TYPE_THREADS = 5
+} MDMacExcResourceType;
+
+typedef enum MDMacExcResourceFlavorCpu {
+  MD_MAC_EXC_RESOURCE_FLAVOR_CPU_MONITOR       = 1,
+  MD_MAC_EXC_RESOURCE_FLAVOR_CPU_MONITOR_FATAL = 2
+} MDMacExcResourceFlavorCpu;
+
+typedef enum MDMacExcResourceFlavorWakeup {
+  MD_MAC_EXC_RESOURCE_FLAVOR_WAKEUPS_MONITOR = 1,
+} MDMacExcResourceFlavorWakeup;
+
+typedef enum MDMacExcResourceFlavorMemory {
+  MD_MAC_EXC_RESOURCE_FLAVOR_HIGH_WATERMARK = 1,
+} MDMacExcResourceFlavorMemory;
+
+typedef enum MDMacExcResourceIOFlavor {
+  MD_MAC_EXC_RESOURCE_FLAVOR_IO_PHYSICAL_WRITES = 1,
+  MD_MAC_EXC_RESOURCE_FLAVOR_IO_LOGICAL_WRITES = 2,
+} MDMacExcResourceIOFlavor;
+
+typedef enum MDMacExcResourceThreadsFlavor {
+  MD_MAC_EXC_RESOURCE_FLAVOR_THREADS_HIGH_WATERMARK = 1,
+} MDMacExcResourceThreadsFlavor;
+
 #endif  /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_EXCEPTION_MAC_OSX_H__ */
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc
--- a/src/processor/minidump_processor.cc
+++ b/src/processor/minidump_processor.cc
@@ -1143,16 +1143,86 @@ string MinidumpProcessor::GetCrashReason
         case MD_EXCEPTION_MAC_MACH_SYSCALL:
           reason = "EXC_MACH_SYSCALL / ";
           reason.append(flags_string);
           break;
         case MD_EXCEPTION_MAC_RPC_ALERT:
           reason = "EXC_RPC_ALERT / ";
           reason.append(flags_string);
           break;
+        case MD_EXCEPTION_MAC_RESOURCE:
+          reason = "EXC_RESOURCE / ";
+          {
+            uint32_t type = (exception_flags >> 29) & 0x7ULL;
+            uint32_t flavor = (exception_flags >> 26) & 0x7ULL;
+            char flavor_string[4] = {};
+            switch (type) {
+              case MD_MAC_EXC_RESOURCE_TYPE_CPU:
+                reason.append("RESOURCE_TYPE_CPU / ");
+                switch (flavor) {
+                  case MD_MAC_EXC_RESOURCE_FLAVOR_CPU_MONITOR:
+                    reason.append("FLAVOR_CPU_MONITOR");
+                    break;
+                  case MD_MAC_EXC_RESOURCE_FLAVOR_CPU_MONITOR_FATAL:
+                    reason.append("FLAVOR_CPU_MONITOR_FATAL");
+                    break;
+                  default:
+                    snprintf(flavor_string, sizeof(flavor_string), "%#3x", flavor);
+                    reason.append(flavor_string);
+                    break;
+                }
+                break;
+              case MD_MAC_EXC_RESOURCE_TYPE_WAKEUPS:
+                reason.append("RESOURCE_TYPE_WAKEUPS / ");
+                if (flavor == MD_MAC_EXC_RESOURCE_FLAVOR_WAKEUPS_MONITOR) {
+                  reason.append("FLAVOR_WAKEUPS_MONITOR");
+                } else {
+                  snprintf(flavor_string, sizeof(flavor_string), "%#3x", flavor);
+                  reason.append(flavor_string);
+                }
+                break;
+              case MD_MAC_EXC_RESOURCE_TYPE_MEMORY:
+                reason.append("RESOURCE_TYPE_MEMORY / ");
+                if (flavor == MD_MAC_EXC_RESOURCE_FLAVOR_HIGH_WATERMARK) {
+                  reason.append("FLAVOR_HIGH_WATERMARK");
+                } else {
+                  snprintf(flavor_string, sizeof(flavor_string), "%#3x", flavor);
+                  reason.append(flavor_string);
+                }
+                break;
+              case MD_MAC_EXC_RESOURCE_TYPE_IO:
+                reason.append("EXC_RESOURCE_TYPE_IO / ");
+                switch (flavor) {
+                  case MD_MAC_EXC_RESOURCE_FLAVOR_IO_PHYSICAL_WRITES:
+                    reason.append("FLAVOR_IO_PHYSICAL_WRITES");
+                    break;
+                  case MD_MAC_EXC_RESOURCE_FLAVOR_IO_LOGICAL_WRITES:
+                    reason.append("FLAVOR_IO_LOGICAL_WRITES");
+                    break;
+                  default:
+                    snprintf(flavor_string, sizeof(flavor_string), "%#3x", flavor);
+                    reason.append(flavor_string);
+                    break;
+                }
+                break;
+              case MD_MAC_EXC_RESOURCE_TYPE_THREADS:
+                reason.append("EXC_RESOURCE_TYPE_THREADS / ");
+                if (flavor == MD_MAC_EXC_RESOURCE_FLAVOR_THREADS_HIGH_WATERMARK) {
+                  reason.append("FLAVOR_THREADS_HIGH_WATERMARK");
+                } else {
+                  snprintf(flavor_string, sizeof(flavor_string), "%#3x", flavor);
+                  reason.append(flavor_string);
+                }
+                break;
+              default:
+                reason.append(flags_string);
+                break;
+            }
+          }
+          break;
         case MD_EXCEPTION_MAC_SIMULATED:
           reason = "Simulated Exception";
           break;
       }
       break;
     }
 
     case MD_OS_WIN32_NT: