At a minimum, when you attempt to view a list of controller services in the gui this specific method is called to obtain a set of referenced controller service identifiers. If there is a circular dependency in that set, you end up with an infinite loop that ultimately results the user being redirected to an error page in the gui.
The method in question is findControllerServiceReferencingComponentIdentifiers. It checks to see if each node has been visited already but does not add them to the set until after recursively calling itself again. If the line "visited.add(node);" is moved above the method call, this will be resolved.