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
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel