Сначала небольшое введение в то, как работает !analyze
.
Когда !analyze
пытается определить причину нарушения доступа (и некоторых других типов исключений, например, SEH исключений , исключений C ++, целочисленное переполнение, деление на ноль и т. д.), он просматривает стек вызовов потока, выдавшего исключение, и выясняет, что находится в верхней части потока. Однако не все кадры стека полезны.
Например, для исключений C ++ вы увидите kernel32!RaiseException
и your_module!__except_handler3
в верхней части стека. Эти кадры должны быть пропущены, поскольку они вряд ли являются причиной проблемы. Иногда !analyze
приходится пропускать много кадров, чтобы добраться до интересного кадра. Просто посмотрите на пример другого вопроса о переполнении стека , где код ошибки составляет ~ 40 кадров ниже.
Чтобы ответить на ваш вопрос: STACKIMMUNE
означает, что все кадры в стеке вызовов пропущены. Это может произойти, когда стек поврежден, или если у вас неправильные символы и вы используете !reload /i
, чтобы игнорировать любые ошибки несоответствия, и, вероятно, во многих других случаях.