infinite recursion
memory leak