There are four distinct kinds of crash reports. They are:

   * Application crash: possibly the most common kind of report, this is generated when execution is halted due to bad memory access, an exception or some other programming error.

   * Low memory: occurs when the application has been killed by the system because there wasn't enough memory to satisfy the application's demands. The format of this report differs from the others in that there are no stack traces for the application threads. Rather than be concerned about what part of your code was executing at the time of termination, you should investigate your memory usage patterns and your responses to low memory warnings. Memory usage of each process is reported in terms of number of memory pages, which as of this writing are 4KB each.

   * User force-quit: distinguished by exception code 0xdeadfa11. Force quits occur when the user first holds down the On/Off button until "slide to power off" appears, then holds down the Home button. It's reasonable to assume the user has done this because the application has become unresponsive, but it's not guaranteed - force-quit will work on any application.

   * Watchdog timeout: distinguished by exception code 0x8badf00d. Timeouts occur when an application takes too long to launch, terminate, or respond to system events.