[Rd] eval(match.call()) (PR#9339)

marc_schwartz at comcast.net marc_schwartz at comcast.net
Fri Nov 3 21:27:30 CET 2006


On Fri, 2006-11-03 at 21:15 +0100, Peter Dalgaard wrote:
> harringt at stat.ubc.ca writes:
> 
> > Full_Name: Justin Harrington
> > Version: 2.4.0
> > OS: Fedora Core 6
> > Submission from: (NULL) (142.103.121.203)
> > 
> > 
> > When I type the (albeit stupid) command
> > 
> > eval(match.call())
> > 
> > R crashes with the following messages (truncated):
> > 
> > *** buffer overflow detected ***: /usr/lib/R/bin/exec/R terminated
> 
> Yes, don't do that then ;-)

Indeed...  ;-)

> Part of the puzzle is that
> 
> > match.call()
> match.call()
> 
> which looks like something with potential for infinite recursion, but
> that doesn't seem to be issue since
> 
> > f <- function(call = sys.call(sys.parent()))call
> > f()
> f()
> > eval(f())
> f()
> 
> does not exhibit the same crash. And indeed
> 
> > x <- quote(match.call())
> > eval(x)
> *** buffer overflow detected ***: /usr/lib/R/bin/exec/R terminated
> ======= Backtrace: =========
> /lib/libc.so.6(__chk_fail+0x41)[0x1f1161]
> /lib/libc.so.6[0x1f0617]
> 
> does look like something that just Should Not Happen...

Peter, are you on FC6?

On FC5, I cannot replicate your crash:

> x <- quote(match.call())
> eval(x)
Error in match.call(definition, call, expand.dots) :
        '.Primitive...' is not a function

?

Regards,

Marc



More information about the R-devel mailing list