Skip to content

Crash due to extreme example

5 messages · Saptarshi Guha, Duncan Murdoch

#
Hello,
I was trying this bit of code (i know it is an extreme case)

g=function(r){
   if(r==1)
	return(list(x=1))
    else
	return(list(x=g(r-1)))
    }

For z=g(500), the code runs but when I print z i.e
 >> z
I get
<environment: R_GlobalEnv>

  *** caught bus error ***
address 0x1, cause 'non-existent physical address'

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace

Running on Leopard, Macbook (intel, 4gb ram)
R version 2.9.2 (2009-08-24)


(No libraries loaded)

Saptarshi Guha | saptarshi.guha at gmail.com | http://www.stat.purdue.edu/~sguha
#
On 23/09/2009 7:10 PM, Saptarshi Guha wrote:
Thanks, an equivalent error happens here.  I'll track it down.

Duncan Murdoch
#
Now fixed, in R-devel and R-patched.

Duncan Murdoch
On 23/09/2009 7:10 PM, Saptarshi Guha wrote:
#
Thanks.
 What caused problem?
Regards
Saptarshi
On Thu, Sep 24, 2009 at 6:20 AM, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
#
On 9/24/2009 11:00 AM, Saptarshi Guha wrote:
R builds up the element name (x$x$x ...) in a fixed size buffer.  There 
was code to detect when the buffer was full and stop building the name, 
but it was buggy.  I patched the bug.

Duncan Murdoch