because your tri-frustum intersection is wrong. a triangle with every point out of the frustum can still be on screen. Or maybe your frustum plane extraction is wrong?
Personally i wouldn't bother to cull each triangle in the scene and rather go with a spatial culling algorithm