Was bedeutet WinDbgs PRIMARY_PROBLEM_CLASS STACKIMMUNE?

8

Im Allgemeinen kann ich keine Auflistung der Bedeutung der Werte finden, die die verschiedenen Felder in WinDbgs Ausgabe des Befehls !analyze -v enthalten können.

Die Suche ist schwierig, da die Ausgabe des Befehls oft gepostet wird, ohne dass die Feldwerte (wie DEFAULT_BUCKET_ID und PRIMARY_PROBLEM_CLASS) explizit angesprochen werden. Gibt es eine Referenzliste?

Um genauer zu sein: Während der Analyse eines Speicherauszugs hat die Ausgabe des Befehls !analyze -v angegeben, dass sowohl DEFAULT_BUCKET_ID als auch PRIMARY_PROBLEM_CLASS "STACKIMMUNE" sind. Was bedeutet das?

    
The diapering architect 30.01.2012, 15:06
quelle

1 Antwort

7

Zuerst eine kleine Einführung, wie !analyze funktioniert.

Wenn !analyze versucht, den Grund für eine Zugriffsverletzung (und einige andere Arten von Ausnahmen zum Beispiel) zu ermitteln , SEH-Ausnahmen , C ++ - Exceptions, Integer-Überlauf, Division durch Null, etc.), es schaut auf die Aufrufstapel des Threads, der die Ausnahme ausgelöst hat und herausfindet, was sich oben auf dem Thread befindet. Es sind jedoch nicht alle Stapelrahmen nützlich.

Zum Beispiel sehen Sie für C ++ - Ausnahmen kernel32!RaiseException und your_module!__except_handler3 an der Spitze des Stapels. Diese Frames müssen übersprungen werden, da sie die Ursache des Problems sehr unwahrscheinlich sind. Manchmal muss !analyze viele Frames überspringen, um zu dem interessanten Frame zu gelangen. Sehen Sie sich ein Beispiel für eine andere Stack Overflow-Frage an, in der der betreffende Code enthalten ist ~ 40 Rahmen darunter.

Um Ihre Frage zu beantworten: STACKIMMUNE ist ein Hinweis darauf, dass alle Frames im Call-Stack übersprungen werden. Dies kann passieren, wenn der Stapel beschädigt ist oder wenn Sie falsche Symbole haben und !reload /i verwendet haben, um eventuelle Fehler zu ignorieren, und wahrscheinlich in vielen anderen Fällen.

    
seva titov 30.01.2012, 21:46
quelle

Tags und Links