Mysterious crash report - looks like a CPU bug

102 Views Asked by At

A user sent me a crash dump of my program, and I cannot understand how what I'm seeing is possible. It looks like one of the registers just changed it's value, without any visible reason. I don't have any explanation except for a CPU bug, but I'm very skeptical about that. Perhaps you can spot what's going on here.

Here's the code disassembly, as seen when opening the crash report (clickable):

enter image description here

Here's, roughly, how the C code looks:

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

There are 0 best solutions below