[Rd] R crashes for large formulas in lm() (PR#8180)

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Oct 5 14:38:12 CEST 2005


This is almost certainly C stack overflow, which will be _very_ 
OS-specific. I can run this 9-var example in Linux with a stacksize of 
30Mb, but not the default 10Mb. I tried it with the default stack under 
valgrind, and it works.

Windows versions of R have I believe a stack of 8Mb, and so I suspect are 
running close to that with 8-var example.

The problem appears to be recursion in StripTerm.


On Wed, 5 Oct 2005, Barry Rowlingson wrote:

> Prof Brian Ripley wrote:
>
>> OK, let's try to reproduce that:
>> 
>> 
>>> x1 <- runif(1000)
> ...
>>> y <- rnorm(1000)
>>> fit <- lm(y~(x1*x2*x3*x4*x5*x6*x7*x8)^2)
>> 
>> 
>> No crash, a quite reasonable fit.
>
> Add one more:
>
> > x9 <- runif(1000)
>
> works with 8:
>
> > fit <- lm(y~(x1*x2*x3*x4*x5*x6*x7*x8)^2)
>
> but go 'one over the eight' and:
>
> > fit <- lm(y~(x1*x2*x3*x4*x5*x6*x7*x8*x9)^2)
> Segmentation fault
>
>
> platform i686-pc-linux-gnu
> arch     i686
> os       linux-gnu
> system   i686, linux-gnu
> status
> major    2
> minor    1.1
> year     2005
> month    06
> day      20
> language R
>
> Baz
>
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-devel mailing list