[Rd] Segmentation fault linked to memory? (PR#929)

Peter Dalgaard BSA p.dalgaard@biostat.ku.dk
30 Apr 2001 16:57:24 +0200


J.C.Rougier@durham.ac.uk writes:

> Hi Everyone,
> 
> The following rather extreme claim on memory causes a
> segmentation fault on my installation:
> 
> fred <- matrix(1:1200, 20, 60)
> 
> littleOP <- function(x, y)
> {
>   z <- as.vector(x) %*% t(as.vector(y))
>   dim(z) <- c(dim(x), dim(y))
>   z
> }
> 
> littleOP(fred, fred)                 # this is OK
> littleOP(littleOP(fred, fred), fred) # whoops! Segmentation fault
> 
> What's a bit strange is that if I do the outer product the
> `old-fashioned' way then I get the more usual error message:
> 
> > (fred %o% fred) %o% fred
> Error: cannot allocate vector of size 2555696 Kb
> 
> Cheers, Jonathan.
> 
> --please do not edit the information below--
> 
> Version:
>  platform = sparc-sun-solaris2.7
>  arch = sparc
>  os = solaris2.7
>  system = sparc, solaris2.7
>  status = 
>  major = 1
>  minor = 2.1
>  year = 2001
>  month = 01
>  day = 15
>  language = R
> 
> Search Path:
>  .GlobalEnv, Autoloads, package:base

You really ought to upgrade before reporting such bugs, but I get it
with 1.2.3 as well. Looks like we have an integer overrun issue:

At the point of the crash, we have succesfully allocated "ans" 

(gdb) p ans
$25 = (SEXPREC *) 0x1fe8038
(gdb) p Rf_length(ans)
$26 = 1728000000
(gdb) p/x Rf_length(ans)
$27 = 0x66ff3000

however, measured in *bytes*, that length won't fit in 32 bits, and

(gdb) p/x (Rf_length(ans)*8)/8
$31 = 0x6ff3000

So I suppose that the true length of ans is only

0x6ff3000

which fits fairly nicely with the segfault occurring when you try to
access cell number 82*1440000

(gdb) p/x 82*1440000
$28 = 0x709c200


-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._