[R-SIG-Mac] Segfault with rWishart in R 2.15.1

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Jul 4 14:59:09 CEST 2012


On 04/07/2012 08:35, peter dalgaard wrote:
>
> On Jul 4, 2012, at 03:12 , Michael Braun wrote:
>
>> I just upgraded to R 2.15.1, and I am getting a segmentation fault
>> when using the rWishart function (from the stats package) to sample
>> moderately-size matrices.
>>
>> Here is the output when I run R within gdb.  720 appears to be the
>> dimensionality cut-off.  Anything smaller works fine.  Anything
>> larger crashes.
>>
>>> x=rWishart(1,700,diag(700)) // this works
>>> x=rWishart(1,720,diag(720))
>> Error: C stack usage is too close to the limit
>>> x=rWishart(1,722,diag(722))
>>
>
> That'll be due to allocating memory off the C stack with alloca().
> Please file a bug report on this (nothing to do with Mac, much less
> with the age of your computer).
>
> In a tight spot, you can run R from the terminal after raising the C
> stack limit with, say, "ulimit -s 32768", but of course the trouble
> returns at twice the matrix size.
>
> Notice that there are really two issues here. One is that the
> R_CheckStack() safeguards are failing. The other is why we're using
> stack allocation in the first place.

They are related: the R_CheckStack() safeguards were being used 
incorrectly.  alloca() is important for frequent small allocations (not 
the case here): the safeguards are only designed to work for repeated 
small allocations (< 100kB, well under 5% of the stack).

I have experimented with a pre-alloca check in the past, and it seems 
this would be a better protection against misuse, and I'll trial that in 
R-devel.

-- 
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-SIG-Mac mailing list