神秘的崩溃报告 - 看起来像一个CPU错误

时间:2014-11-13 21:19:55

标签: c visual-studio debugging crash-reports

用户向我发送了我程序的崩溃转储,我无法理解我所看到的是什么。看起来其中一个寄存器只是改变了它的值,没有任何明显的原因。除了CPU错误之外,我没有任何解释,但我对此持怀疑态度。也许你可以发现这里发生了什么。

这是代码反汇编,如打开崩溃报告(可点击)时所见:

enter image description here

这里大致是C代码的外观:

void **pp = *g_some_global;
if(!pp)
    return NULL;

int array_count = (int)pp[0];
void **array_ptr = (void **)pp[1];

for(i = 0; i < array_count; i++)
{
    LONG_PTR *contents = array_ptr[i];

    if(contents[4] == compare)
    {
        void **pp2 = (LONG_PTR *)contents[7]; // contents is different here! pp2 is NULL

        int array_count2 = (int)pp2[0]; // the CRASH!
        void **array_ptr2 = (void **)pp2[1];

        // ...
    }
}

0 个答案:

没有答案