I've since fixed it, but it was along the lines of
Shader.enableAttribute(int location, int size, int type, int stride, long offset){
GL20.glEnableVertexAttribArray(location);
GL20.glVertexAttribPointer(location, size, type, false, stride, offset);
}
----
foreach(VertexBuffer vb : vertexBuffers){
GL15.glBindBuffer(vb.getID());
GL20.glEnableVertexAttribArray(vb.getLocation());
shader.enableAttribute(vb.getLocation, vb.getElementCount(), GL11.GL_FLOAT, 0, 0);
}
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, numVerticies);
I had forgotten I called glEnableVertexAttribArray in my shader class, so I managed call it twice in a row before calling glDrawArrays. It's clearly programmer error, but it did cause a jvm crash. I managed to miss the nvogl call in the crash dump originally, so I thought it was a lwjgl problem, but this is clearly not.