Таинственный отчет о сбое - выглядит как ошибка процессора

Пользователь отправил мне аварийный дамп моей программы, и я не могу понять, как это возможно. Похоже, что один из регистров только что изменил свое значение без видимой причины. У меня нет никаких объяснений, кроме ошибки процессора, но я очень скептически к этому отношусь. Возможно, вы сможете определить, что здесь происходит.

Вот разборка кода, как видно при открытии отчета о сбое (кликабельно):

Вот, примерно, как выглядит код 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 ответов

Другие вопросы по тегам