I have this method that prepares the coordinates in the posCoords array. It works properly about 30% of the time, then the other 70% the first few triangles are messed up in the grid.
The entire grid is drawn using GL_TRIANGLE_STRIP.
I'm pulling my hair out trying to figure out whats wrong. Any ideas?

I tend to draw left to right and at the end of the row add a degenerate triangle, then left to right again.

e.g. [1, 2, 3, 4, 5, 6; 6 10; 10, 11, 8, 9, 6, 7]

The middle part is called a degenerate triangle (e.g. triangles of zero area).

Also, if I had to take a guess at why you are seeing various kinds of corruption, I'd check to make sure that your vertices and indices are exactly what you expect them to be - normally you see that kind of corruption when you don't specify indices correctly.