Background errors
During the generation of error reports in the default handlers provided by the Kernel, a check will be made for errors which are not caused by the foreground task. This applies to :
- Data abort
- Prefetch abort
- Branch through zero
- Undefined instruction
- Stack corruption handlers
The checks use the BTS embedded within the stack at the time of the exception to determine whether the cause was due to a foreground operation, or has been triggered by a component running in the background. The only ways that a background operation can be triggered is through an interrupt request (IRQ or FIQ) or a transient callback. Of the interrupts, only IRQ operations can be trapped.
If, at the time of the exception occuring, a BTS chunk exists within the chain for either an 'Interrupt' or 'Transient callback' event, then the exception is deemed to have occurred in the background. Interrupts can occur at any time that IRQs are enabled. Transient callbacks can occur at any time that system is returning from an IRQ or system call to USR mode. Because the system may be threaded, for example within a network filing system which must trigger callbacks, these may not be the top most elements of the BTS chain.
When such an event occurs, the string 'Background error:' will be prepended to the error message (retaining the error number). This should indicate to the user that it is not the foreground component which is at fault. Future versions of the operating system may treat such faults differently.
|