celluloid/celluloid — pull request #250 by tarcieri (2013-05-12 18:48:50+00:00)
Title: Recursion detection and #inspect infinite loop fix

These changes:

1. Track call chains on a task-by-task basis
2. Begins trying to encapsulate call chains in a `Celluloid::CallChain` class (which merely does housekeeping at the moment)
2. Introduce `Celluloid.detect_recursion` to identify when calls between actors are recursing
3. Use `Celluloid.detect_recursion` in Celluloid#inspect to detect recursion between actors and add "..." appropriately instead of going into an infinite loop

Best of all, this fixes #22, Celluloid's oldest bug. Woohoo!