[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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._