Episode

Stowed Exception C000027B

Eine stowed Exception ist eine Art von Ausnahme, die von UWP-Anwendungen hergestellt wird. Sie wurde in Windows 8.0 als Teil der WinRT-API (jetzt als UWP bezeichnet) eingeführt.

Der Ausnahmecode ist 0xC000027B.

Der erste Ausnahmeparameter (0) ist die Startadresse eines Arrays von Zeigern auf Strukturen, die mit einer STOWED_EXCEPTION_INFORMATION_HEADER Struktur beginnen. Seit Windows 8.1 ist STOWED_EXCEPTION_INFORMATION_V2 die verwendete Version.

Der zweite Ausnahmeparameter (1) ist die Anzahl der Zeiger im Array.

"Stowed Exception" wurde durch die Point-of-Failure-Ausnahme (0xC000027C) ersetzt/verbessert. Wie POF-Ausnahmen wird der Ausnahmecode vom WinRT-Framework generiert. Es ist nicht erforderlich, dass Anwendungen neu kompiliert werden, damit sie verwendet werden.

Eine stowed Exception wird ausgelöst, wenn ein asynchroner Vorgang fehlschlägt. Wenn die Ausnahme über einen RoOriginateException- oder RoOriginateLanguageException-Aufruf vom Arbeitsthread gemeldet wird, wird ein Stack Backtrace (Array of Instruction Pointers) über einen CaptureStackBackTrace-Funktionsaufruf vom aktuellen Thread erfasst. Der Stack Backtrace und HRESULT der Ausnahme werden in ein IRestrictedErrorInfo -Objekt eingeschlossen und durch die Sprachprojektionsebenen von WinRT an den Aufrufer weitergeleitet.

Wenn die Ausnahme nicht vom Aufrufer behandelt wird, wird die verstaute Ausnahme tödlich ausgelöst. Da das Auslösen verzögert wird, hat der aktuelle Kontext des zugeordneten Dumps wenig Wert. Der Thread des ursprünglichen Problems ist regelmäßig nicht mehr vorhanden und hat in diesem Fall den Vorgang abgeschlossen (d. h. der Stapelspeicher des Threads wurde überschrieben). Dies bedeutet, dass Funktionsparameter und lokale Variablen nicht verfügbar sind.

Führen Sie die folgenden Schritte aus, wenn Sie diese Probleme mit den Debuggingtools für Windows debuggen:

  1. EXR -1
    • Anzeigen der Code-, gestowierten Ausnahmearrayadresse und -anzahl über die Parameter
  2. !pde.dse
    • Listet die verstauten Ausnahmen auf.
    • Jedes HRESULT wird beschrieben (dieselbe Ausgabe wie !pde.err)
    • Jeder Backtrace wird als Aufrufstapel angezeigt.
    • Jede (optional) geschachtelte Ausnahme wird angezeigt (z. B. !sos.pe Ausgabe einer CLR-Ausnahme)

Zusätzliche Ressourcen: