From ripley at stats.ox.ac.uk  Wed Oct  5 18:01:28 2005
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Wed, 5 Oct 2005 17:01:28 +0100 (BST)
Subject: [Rd] R crashes for large formulas in lm() (PR#8180)
In-Reply-To: <20051006.003027.884028680.nakama@ki.rim.or.jp>
References: <Pine.LNX.4.61.0510051256110.24974@gannet.stats>
	<4343C2A5.2060102@lancaster.ac.uk>
	<Pine.LNX.4.61.0510051327310.25562@gannet.stats>
	<20051006.003027.884028680.nakama@ki.rim.or.jp>
Message-ID: <Pine.LNX.4.61.0510051637490.22717@gannet.stats>

On Thu, 6 Oct 2005, Ei-ji Nakama wrote:

> Hi,
>
> Wed, 5 Oct 2005 13:38:12 +0100 (BST)
> Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote.
>> 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.
>
> default of stack of ld for Mingw seems to be 2M.

Yes thanks I have since found that (from ld --help)

> see. binutils-2.16.91-20050827-1/ld/emultempl/pe.em
>   289    D(SizeOfStackReserve,"__size_of_stack_reserve__", 0x200000),
>
> How about adding the following to MkRules?
> MINGW32LDFLAG=-Wl,--stack=33554432

I have been trying that but I cannot make it work (checking the header).
It seems the way that does work is -Wl,--stack=0xA00000.  That does allow 
this example (with 8 vars) to always run on WinXP.

-- 
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