I'm trying to solve the collision problems by rendering the collision geometry, but I just can't get it working. I always get access violation and I have no idea why.

Here's the wrapper class' method starting the rendering:
[pascal]
procedure TPhysicsObject.DebugRender;
begin
if NewtonBody <> nil then
NewtonBodyForEachPolygonDo(NewtonBody, @DebugShowGeometryCollision);
end;
[/pascal]

Here's the callback
[pascal]
procedure DebugShowGeometryCollision(Body: PNewtonBody; vertexCount: Integer; faceVertec: PFloat; id: Integer);
var
i: Integer;
p0, p1: TVector3f;
va: array of TVector3f;
begin
SetLength(va, VertexCount);
CopyMemory(va, faceVertec, VertexCount * SizeOf(TVector3f));
p0 := va[0];
for i := 1 to VertexCount - 1 do
begin
p1 := va[i];
glVertex3f(p0.x, p0.y, p0.z);
glVertex3f(p1.x, p1.y, p1.z);
p0 := p1;
end;
end;
[/pascal]

This callback works ONCE and after that I always get access violation when exiting the procedure. Why?