# Software errors

Source: [https://docs.qualcomm.com/doc/80-88500-4/topic/67_Software_errors.html](https://docs.qualcomm.com/doc/80-88500-4/topic/67_Software_errors.html)

The software failures and exceptions are handled by the error handler. Each core should have its own dedicated error handler.

The error handler is expected to handle any failure that the software can detect. These may cover failure cases such as the following:

- Software failures – The programmer has expected an error situation, therefore, it usually links to error handler directly, for example, `ASSERT()`, error fatal, and panic. There could be some hardware-assisted error detection to trigger a software failure as well, for example, watchdog bark.
- Exception – Exceptions are detected by the CPU directly, and it invokes a registered exception handler. The implementation on the exception handlers may vary based on OS. Not all the exceptions are fatal errors.
        
    For example, the translation lookaside buffer (TLB) miss often happens on both application processor and xDSP, but it is often intentional and recoverable by mapping the new memory region to TLB/Page table entry by OS. However, if the exception is non-recoverable, then it becomes a fatal error.

Each subsystem may need to be aware of another subsystem’s failure. For the error notifications from subsystem to application processor, shared memory state machine (SMSM) is used.

**Parent Topic:** [Debug](https://docs.qualcomm.com/doc/80-88500-4/topic/58_Debug.html)

Last Published: Aug 18, 2023

[Previous Topic
General error routing to APSS](https://docs.qualcomm.com/bundle/publicresource/80-88500-4/topics/66_General_error_notification.md) [Next Topic
Log analysis](https://docs.qualcomm.com/bundle/publicresource/80-88500-4/topics/71_Log_analysis.md)