[1] Despite this, such circular (or cyclic) dependencies have been found to be widespread among the source files of real-world software.
Circular dependencies can cause a domino effect when a small local change in one module spreads into other modules and has unwanted global effects (program errors, compile errors).
Circular dependencies can also result in infinite recursions or other unexpected failures.
Circular dependencies may also cause memory leaks by preventing certain automatic garbage collectors (those that use reference counting) from deallocating unused objects.
There are tools to analyze software and find unwanted circular dependencies.