There is an infinite-loop in function _arc_error_normalized (double angle) in file cairo-arc.c.
There is an infinite-loop in function _arc_error_normalized (double angle) in file cairo-arc.c.
do {
angle = M_PI / i++;
error = _arc_error_normalized (angle);
} while (error > tolerance); // error= 0 tolerance =0 ,so the loop will always be true.
The detailed info can be found at here --6.