A Point-of-Failure (POF) Exception is a type of Exception made by UWP applications. It was introduced in the Windows 10 Fall Creators Update (Sept. 2017).
The Exception Code is 0xC000027C.
The first Exception Parameter (0) is an HRESULT. In 64bit dumps, the value needs to be masked down to the bottom 32bits. e.g. 0xFFFFFFFF80070512 => 0x80070512
Point-of-Failure Exception replaces/enhances Stowed Exception (0xC000027B). Like Stowed Exceptions, the Exception Code is generated by the WinRT Framework. It does not require applications to be re-compiled for it to be used.
A POF Exception is raised when an asynchronous operation fails. When the exception is reported from the worker thread, a Process Shapshot is collected of the process. The PSS handle and HRESULT of the exception is wrapped in an IRestrictedErrorInfo based object and routed through the language projection layers of WinRT. If the exception is not handled by the caller, the Process Snapshot is used to report the issue back at "state" when RoOriginateException or RoOriginateLanguageException was called.
Follow these steps when debugging these issues with the Debugging Tools for Windows:
- .exr -1
- Determine the HRESULT via the first parameter
- !error <hresult> and/or !pde.err <hresult>
- Describe the HRESULT
- Set the current debugger context to the Process Snapshot position
- View the call stack
- Inside - Stowed Exception
- Inside - .exr
- Inside - .ecxr
- Inside - Windows SDK
- Defrag Tools - PDE Debugger Extension (via OneDrive link)
- Microsoft Docs - Debugging Tools for Windows
- MSDN - RoOriginateException
- MSDN - RoOriginateLanguageException
- MSDN - IRestrictedErrorInfo interface