Episode
Stowed Exception C000027B
A Stowed Exception is a type of Exception made by UWP applications. It was introduced in Windows 8.0 as part of WinRT API (now known as UWP).
The Exception Code is 0xC000027B.
The first Exception Parameter (0) is the starting address of an array of pointers to structures that begin with a STOWED_EXCEPTION_INFORMATION_HEADER structure. Since Windows 8.1, STOWED_EXCEPTION_INFORMATION_V2 has been the version in use.
The second Exception Parameter (1) is the number of pointers in the array.
Stowed Exception has been replaced/enhanced by the Point-of-Failure Exception (0xC000027C). Like POF 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 Stowed Exception is raised when an asynchronous operation fails. When the exception is reported from the worker thread via a RoOriginateException or RoOriginateLanguageException call, a Stack Backtrace (array of Instruction Pointers) is collected of the current thread via a CaptureStackBackTrace function call. The Stack Backtrace and HRESULT of the exception is wrapped in an IRestrictedErrorInfo object and routed through the language projection layers of WinRT to the caller.
If the exception is not handled by the caller, the stowed exception is thrown fatally. Because the throwing is deferred, the current context of the associated dump has little value. The thread of the original issue regularly no longer exists, and if it does, has concluded the operation (meaning the thread's stack memory has been overwritten). This means that function parameters and local variables are not available.
Follow these steps when debugging these issues with the Debugging Tools for Windows:
- .exr -1
- View the Code, Stowed Exception Array Address and Count via the parameters
- !pde.dse
- Lists the Stowed Exceptions
- Each HRESULT is described (same output as !pde.err)
- Each Backtrace is displayed as a call stack
- Each (optionally) nested exception is displayed (e.g. !sos.pe output of a CLR Exception)
Additional Resources:
- Inside - Point-of-Failure Exception
- Inside - .exr
- Inside - Windows SDK
- Defrag Tools - PDE Debugger Extension (via OneDrive link)
- Defrag Tools - #136 - Debugging User Mode Crash Dumps Part 2
- Defrag Tools - #167 - Debugging User Mode Crash Dumps Redux
- Microsoft Documentation - Debugging Tools for Windows
- NTDebugging Blog - Part 1 + Part 2
- MSDN - RoOriginateException
- MSDN - RoOriginateLanguageException
- MSDN - IRestrictedErrorInfo interface
A Stowed Exception is a type of Exception made by UWP applications. It was introduced in Windows 8.0 as part of WinRT API (now known as UWP).
The Exception Code is 0xC000027B.
The first Exception Parameter (0) is the starting address of an array of pointers to structures that begin with a STOWED_EXCEPTION_INFORMATION_HEADER structure. Since Windows 8.1, STOWED_EXCEPTION_INFORMATION_V2 has been the version in use.
The second Exception Parameter (1) is the number of pointers in the array.
Stowed Exception has been replaced/enhanced by the Point-of-Failure Exception (0xC000027C). Like POF 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 Stowed Exception is raised when an asynchronous operation fails. When the exception is reported from the worker thread via a RoOriginateException or RoOriginateLanguageException call, a Stack Backtrace (array of Instruction Pointers) is collected of the current thread via a CaptureStackBackTrace function call. The Stack Backtrace and HRESULT of the exception is wrapped in an IRestrictedErrorInfo object and routed through the language projection layers of WinRT to the caller.
If the exception is not handled by the caller, the stowed exception is thrown fatally. Because the throwing is deferred, the current context of the associated dump has little value. The thread of the original issue regularly no longer exists, and if it does, has concluded the operation (meaning the thread's stack memory has been overwritten). This means that function parameters and local variables are not available.
Follow these steps when debugging these issues with the Debugging Tools for Windows:
- .exr -1
- View the Code, Stowed Exception Array Address and Count via the parameters
- !pde.dse
- Lists the Stowed Exceptions
- Each HRESULT is described (same output as !pde.err)
- Each Backtrace is displayed as a call stack
- Each (optionally) nested exception is displayed (e.g. !sos.pe output of a CLR Exception)
Additional Resources:
- Inside - Point-of-Failure Exception
- Inside - .exr
- Inside - Windows SDK
- Defrag Tools - PDE Debugger Extension (via OneDrive link)
- Defrag Tools - #136 - Debugging User Mode Crash Dumps Part 2
- Defrag Tools - #167 - Debugging User Mode Crash Dumps Redux
- Microsoft Documentation - Debugging Tools for Windows
- NTDebugging Blog - Part 1 + Part 2
- MSDN - RoOriginateException
- MSDN - RoOriginateLanguageException
- MSDN - IRestrictedErrorInfo interface
Have feedback? Submit an issue here.