Wacky unknown pointer issues.

Turns out it's not the pointers. This seizes up as well.

void CubeControl::writeCube(cubeStep thisCube)
{
    int startTime = millis();
    byte arrayHolder[numRegisters];

    while(millis()-startTime <= thisCube.stepDuration)
    {
        for (int thisLayer = 0; thisLayer < numLayers; thisLayer++)
        {
            for (int regnum = 0; regnum < numRegisters; regnum++) 
            {
                arrayHolder[regnum] = thisCube.layer[thisLayer][regnum];
            }
            
            writeLayer(arrayHolder, thisLayer, thisCube.layerDuration);
            
            Serial.println();
            Serial.println(arrayHolder[0]);        
        }
    }
    
    return;
}

Any clues? I'm at a loss.

It's for an LED cube. It blinks in the correct order, stops blinking, and either quits going though the loop like in the above example or starts throwing out garbage data.