Épisode

Exception Stowed C000027B

Une exception stowed est un type d’exception effectuée par les applications UWP. Il a été introduit dans Windows 8.0 dans le cadre de l’API WinRT (maintenant appelée UWP).

Le code d’exception est 0xC000027B.

Le premier paramètre d’exception (0) est l’adresse de départ d’un tableau de pointeurs vers des structures commençant par une structure STOWED_EXCEPTION_INFORMATION_HEADER . Depuis Windows 8.1, STOWED_EXCEPTION_INFORMATION_V2 a été la version utilisée.

Le deuxième paramètre d’exception (1) est le nombre de pointeurs dans le tableau.

L’exception stowed a été remplacée/améliorée par l’exception de point de défaillance (0xC000027C). Comme les exceptions POF, le code d’exception est généré par l’infrastructure WinRT. Il ne nécessite pas que les applications soient recompilées pour qu’elles soient utilisées.

Une exception stowed est déclenchée lorsqu’une opération asynchrone échoue. Lorsque l’exception est signalée à partir du thread de travail via un appel RoOriginateException ou RoOriginateLanguageException , un backtrace stack (tableau de pointeurs d’instructions) est collecté du thread actuel via un appel de fonction CaptureStackBackTrace . La pile Backtrace et HRESULT de l’exception est encapsulée dans un objet IRestrictedErrorInfo et acheminée via les couches de projection de langage de WinRT vers l’appelant.

Si l’exception n’est pas gérée par l’appelant, l’exception a été levée irrécupérablement. Étant donné que la levée est différée, le contexte actuel du vidage associé a peu de valeur. Le thread du problème d’origine n’existe plus régulièrement et, s’il le fait, a conclu l’opération (ce qui signifie que la mémoire de la pile du thread a été remplacée). Cela signifie que les paramètres de fonction et les variables locales ne sont pas disponibles.

Suivez ces étapes lors du débogage de ces problèmes avec les outils de débogage pour Windows :

  1. .exr -1
    • Afficher le code, l’adresse du tableau d’exceptions stowed et le nombre via les paramètres
  2. !pde.dse
    • Répertorie les exceptions non autorisées
    • Chaque HRESULT est décrit (même sortie que !pde.err)
    • Chaque backtrace s’affiche sous la forme d’une pile d’appels
    • Chaque exception imbriquée (éventuellement) s’affiche (par exemple, !sos.pe sortie d’une exception CLR)

Ressources supplémentaires :