Contents

EXC_RESOURCE

The operating system stopped the process because the process exceeded a limit on resource consumption, like CPU time or memory.

Overview

If the Exception Note field contains NON-FATAL CONDITION, this means the operating system generated a crash report without actually terminating the process. The Exception Message field describes the amount of resources consumed over a specific time interval.

The crash report lists the specific resource in the Exception Subtype field:

CPU and CPU_FATAL

A thread in the process used too much CPU over a short period of time.

MEMORY

The process crossed a memory limit imposed by the system. This may be a precursor to termination for excess memory usage.

IO

The process caused an excessive amount of disk writes over a short period of time.

WAKEUPS

Threads in the process woke up too many times per second, which consumes battery life.

Excessive wake-ups can come from calling thread-to-thread communication APIs more often than expected; these APIs include perform(_:on:with:waitUntilDone:), async(execute:), and dispatch_async. Because the communication that triggers this exception is happening so frequently, crash reports usually include multiple background threads with very similar backtraces that indicate the origin of the thread communication. See Modernizing Grand Central Dispatch Usage for how to manage concurrent workloads more efficiently.

See Also

Exceptions