On Wednesday 15 June 2005 18:26, Austin Ziegler wrote:
> On 6/15/05, Andrew Walrond <andrew / walrond.org> wrote:
> > Is this something I could have caused by overriding some method on the
> > problematic object? Or is it a bug?
>
> Difficult to say without seeing your code.
>
> However, I have experienced it most with highly cyclical object graphs.
>

Well the code is open; its the Heretix linux distro package manager, but the 
class in question is 'Package' and its implementation runs to 1500 lines or 
so.

The Package objects contain hashes of references to other package objects 
(detailing linux package dependencies), and there is a class variable @@all 
which is a hash containing references to every package. So I guess there is 
plenty of scope for #inspect to get bogged down.

The problem does have some nasty side effects, like not being able to use 
$!.message in exception handlers, without the application spinning endlessly 
at 100% cpu.

I have sidestepped the problem by overriding #inspect for the Package class, 
but a fragile #inspect does seem to present non-obvious problems for the 
unwary coder, due to its hidden use in standard stuff like Exception#message.

Andrew Walrond