Re: [Rd] segfault following a detach

From: Byron Ellis <ellis_at_stat.harvard.edu>
Date: Sat 10 Dec 2005 - 05:58:21 GMT

That sounds like your C function is smashing some of the header information in a chunk of memory somewhere past res2 so that cleanup during quit fails.

On Dec 9, 2005, at 4:28 PM, Izmirlian, Grant (NIH/NCI) [E] wrote:

> Jim:
>
> This reminds me of problems I've had before, but usually they occur
> when I quit R
> i.e. q(), because when testing and developing I can't remember
> actually detaching
> a package. I can however think of countless times I get a
> segmentation fault upon
> quiting R. Usually this boils down to a hidden return argumen that
> is given an
> insufficient allocation of memory. For example
>
> "foo" <- function(x, y, z){
> nx <- length(x)
> ny <- length(y)
> nz <- length(z)
> ans <- .C("bar",
> x = as.double(x),
> y = as.double(y),
> z = as.double(z),
> res1 = as.double(rep(0, nx)),
> res2 = as.double(rep(0, nx*ny)),
> PACKAGE = "FooBar")
> list(result = asn$res1)
> }
>
> Notice that only ans$res1 is returned so that it is easy to forget
> about ans$res2,
> as I have often done! Now suppose that the C routine actually needs
> nx*ny*nz space
> (say) for the pointer to double at the position indicated by res2
> instead of just
> the nx*ny provided. Although you would expect a segmentation fault
> at runtime, it
> is my experience that sometimes the function completes and the
> segmentation fault
> doesn't happen until I quit R.
>
> I hope that these comments are helpful,
>
> Grant Izmirlian,
> NCI
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

---
Byron Ellis (ellis@stat.harvard.edu)
"Oook" -- The Librarian

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Sat Dec 10 17:13:26 2005

This archive was generated by hypermail 2.1.8 : Sun 11 Dec 2005 - 02:22:10 GMT