From ripley at stats.ox.ac.uk  Wed Oct  5 14:38:12 2005
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Wed, 5 Oct 2005 13:38:12 +0100 (BST)
Subject: [Rd] R crashes for large formulas in lm() (PR#8180)
In-Reply-To: <4343C2A5.2060102@lancaster.ac.uk>
References: <20051005111311.018711DD7C@slim.kubism.ku.dk>
	<Pine.LNX.4.61.0510051256110.24974@gannet.stats>
	<4343C2A5.2060102@lancaster.ac.uk>
Message-ID: <Pine.LNX.4.61.0510051327310.25562@gannet.stats>

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



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