[Rcpp-devel] R Session Aborted when calling C++
Alexander Ilich
ailich at mail.usf.edu
Thu Oct 29 00:28:23 CET 2020
Hi, I'm a bit new to coding in C++, but I'm wondering if anyone knows what
could cause the R Session to abort when running functions coded in C++.
I've tried with R 3.6.3 and R 4.0.3, as well as with the latest CRAN
release and the release on drat. I'm working on some sliding window
processing functions for raster data, and for some reason on my data it
often, but not always, causes my R session to abort if I use a window size
of 17 or greater. The function works fine for smaller window sizes, and
even works with a window size of 17 for rasters of the same size filled
with random numbers. The source code for my functions is available on
github at (https://github.com/ailich/GLCMTextures,) and I've included an
example script below that includes how to install the R package.
devtools::install_github("ailich/GLCMTextures") #Install my package from
github
library(raster)
library(GLCMTextures) #Load libraries
data("test_mat") #Load test data
r<- raster(test_mat) #Convert to raster
rq<- quantize_raster(r, n_levels = 4, method = "equal prob") #quantize
range to 0-3
plot(rq)
?glcm_textures #pull up help file
#Runs fine
test1<- glcm_textures(r = rq, w = c(15,15), n_levels = 4, quantization =
"none", shift=c(-1,1)) #R function
test2<- GLCMTextures:::C_glcm_textures_helper(rq = as.matrix(rq), w =
c(15,15), n_levels = 4, shift = c(-1,1)) #Internal C++ function called
within the R function
#Usually causes R to abort (But sometimes runs for some reason)
#If this section runs, usually will not run if you clear the environment,
restart R, and try again
test3<- glcm_textures(r = rq, w = c(17,17), n_levels = 4, quantization =
"none", shift=c(-1,1)) #R function
test4<- GLCMTextures:::C_glcm_textures_helper(rq = as.matrix(rq), w =
c(17,17), n_levels = 4, shift = c(-1,1)) #Internal C++ function called
within the R function glcm_textures
#From playing around with it and commenting out code blocks,
C_glcm_textures_helper seems to crash at the call to C_make_glcm
#Create a new dataset of same size (This runs)
rq2<- rq #Make new data equal to old data
values(rq2)<- sample(0:3, size = nrow(rq2)*ncol(rq2), replace = TRUE)
#Replace with random values in same range
plot(rq2)
test4<- glcm_textures(r = rq2, w = c(17,17), n_levels = 4, quantization =
"none", shift=c(-1,1)) #Since it runs on a raster of the same size it
doesn't seem to be that it's too large for the C++ memory.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20201028/f54dac0d/attachment.html>
More information about the Rcpp-devel
mailing list