[Rd] .Internal(inspect(x)) gives overly verbose output for reference classes

Duncan Murdoch murdoch.duncan at gmail.com
Wed Mar 7 16:37:58 CET 2012


On 12-03-07 9:52 AM, Richard Cotton wrote:
> Even for an extremely simple instance of a reference class
>
> x<- setRefClass("x")
> y<- x$new()
>
> calling the internal inspect function
>
> .Internal(inspect(y))
>
> produces enough output that it takes several minutes to print to the
> console.  (Actually I gave up and terminated the command after ~10
> mins.  It isn't clear whether the output would eventually complete.)
>
> Are reference classes really so complicated inside, or is this a bug?
>
> ______________________________________________

If you look at the output, you'll see it's looping.  When I hit Esc, I 
saw that .self is an S4SXP with an attribute .xData which is an 
environment containing the same .self, ad infinitum.

So I'd say it's a bug in inspect().  It can handle the case of an 
environment holding itself, but I think it was written before S4SXPs 
contained themselves, and it looks like it's not checking for that.

I'll take a look if someone else doesn't get there first...

Duncan Murdoch



More information about the R-devel mailing list