In essence: "Yes" On 11 February 2014 at 15:18, Alessandro Mammana wrote: | Hi all, | I got another segfault using Rcpp. It is very difficult to understand | where it happens and to reduce it to a minimal example, so for now I | am not posting very precise code here, but I have a suspicion, maybe | you could help me saying if my suspect is right.
Use a debugger: R -d gdb and then proceed as normal. Make sure your compiler flags include -g as well. Dirk | I am doing something similar: | | in a .cpp file: | @@@@@@@@@@@@@@@@@@@ | struct GapMat { | int* ptr; | int* colset; | int nrow; | int ncol; | | | inline int* colptr(int col){ | return ptr + colset[col]; | } | | GapMat(){} | | GapMat(int* _ptr, int* _colset, int _nrow, int _ncol): | ptr(_ptr), colset(_colset), nrow(_nrow), ncol(_ncol){} | }; | | | // [[Rcpp::export]] | IntegerVector colSumsGapMat(Rcpp::IntegerVector vec, | Rcpp::IntegerVector pos, int nrow){ | GapMat mat(vec.begin(), pos.begin(), nrow, pos.length()); | IntegerVector res(pos.length()); | | for (int i = 0; i < pos.length(); ++i){ | for (int j = 0; j < nrow; ++j){ | res[i] += mat.colptr(i)[j]; | } | } | | return res; | } | @@@@@@@@@@@@@@@@@@@@@ | | from R: | | vec <- a very big integer vector | nrow <- 80 | pos <- a very big subset of positions, such that max(pos) + nrow < length(vec) | colsums <- colSumsGapMat(vec, pos, nrow) | | | from time to time I get a segfault. | Note: this is not exactly the code that produces the segfault (because | that one is very complicated), so it might be that this code is | totally fine. | | My suspicion: | | I am using the pointer "vec.begin()", but then I am allocating new | memory in the R area of memory with "IntegerVector res(pos.length())" | and R decides to move the original values of "vec" to some other | place, making the pointer invalid. | | Is that possible???? | | Sorry for being very vague and thx in advance!!! | Ale | | -- | Alessandro Mammana, PhD Student | Max Planck Institute for Molecular Genetics | Ihnestraße 63-73 | D-14195 Berlin, Germany | _______________________________________________ | Rcpp-devel mailing list | Rcpp-devel@lists.r-forge.r-project.org | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel -- Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel