[Rcpp-devel] Segfault error during simulation in Rcpp

Kevin Ushey kevinushey at gmail.com
Thu May 16 18:38:22 CEST 2013


FWIW, I can reproduce the segfault with this example, whether running R as
vanilla or not.

> sessionInfo()
R version 3.0.0 (2013-04-03)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] Rcpp_0.10.3

-Kevin


On Thu, May 16, 2013 at 9:01 AM, Matteo Fasiolo <matteo.fasiolo at gmail.com>wrote:

> Thanks for your reply Dirk.
>
> Maybe I have found something.
> Hopefully this is reproducible and simple enough:
>
> /*
> * C++ file "b.cpp"
> * Just copying the input matrix into A and returning A.
> */
>
> #include <Rcpp.h>
>
> using namespace Rcpp;
>
> // [[Rcpp::export]]
> NumericMatrix myFun(NumericMatrix input, int n){
>
> NumericMatrix A(n, n);
>
> for(int Row = 0; Row < n; Row++)
>   for(int Col = 0; Col < n; Col++)
>   {
>     A(Row, Col) = input(Row, Col);
>   }
>
> return A;
> }
>
>
> ///////////////////////////////////////////
>
> Then I open a terminal:
>
> teo at oracolo:~$ R --vanilla
>
> R version 3.0.0 (2013-04-03) -- "Masked Marvel"
> Copyright (C) 2013 The R Foundation for Statistical Computing
> Platform: x86_64-pc-linux-gnu (64-bit)
> [........]
> Type 'q()' to quit R.
>
> > library(Rcpp)
> > sourceCpp("~/Desktop/b.cpp")
> >
> > #I run it 10 times and everything is fine.
> > n = 10
> > x <- 1:n^2
> >
> > for(ii in 1:10)
> + {
> +   means <- matrix(x, n, n)
> +   res <- myFun(means, n)
> +   a <- res[1, 1]
> + }
> > res
>       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
>  [1,]    1   11   21   31   41   51   61   71   81    91
>  [2,]    2   12   22   32   42   52   62   72   82    92
>  [3,]    3   13   23   33   43   53   63   73   83    93
>  [4,]    4   14   24   34   44   54   64   74   84    94
>  [5,]    5   15   25   35   45   55   65   75   85    95
>  [6,]    6   16   26   36   46   56   66   76   86    96
>  [7,]    7   17   27   37   47   57   67   77   87    97
>  [8,]    8   18   28   38   48   58   68   78   88    98
>  [9,]    9   19   29   39   49   59   69   79   89    99
> [10,]   10   20   30   40   50   60   70   80   90   100
> >
> >
> > #I run it 10^6 times and everything and I get a segfault.
> > n = 10
> > x <- 1:n^2
> >
> > for(ii in 1:10^6)
> + {
> +   means <- matrix(x, n, n)
> +   res <- myFun(means, n)
> +   a <- res[1, 1]
> + }
>
>  *** caught segfault ***
> address (nil), cause 'unknown'
>
> Traceback:
>  1: res[1, 1]
>
>
> If I run the same code without the --vanilla option it works fine!
> Certainly you know why using --vanilla is a problem here, honestly I've
> always used that option
> because I don't want R to ask me if I want to save the working environment
> when I quit.
> As you said the problem was coming from R (actually my improper use of R)
> and hopefully this is it!
>
>
>
>
>
> On Thu, May 16, 2013 at 3:42 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
>
>>
>> Matteo,
>>
>> Can you provide a single, self-contained example and calling sequence that
>> leads to reproducible crashes?
>>
>> That would be a bug. And we try to address it in Rcpp.
>>
>> As for your "issues" with RNGScope, I'd recommend that you write a C(++)
>> function called from R __without using Rcpp__ and I very confident that
>> you
>> would the exact same issue.  Meaning that that all comes form R, which in
>> itself is a pretty big system with numerous temp. allocations. But
>> generally
>> no known bug.  So please learn more about R and valgrind -- I suspect that
>> you are simply getting confused by the copious and somewhat technical
>> output
>> produced by valgrind when running R.
>>
>> Dirk
>>
>> --
>> Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
>>
>
>
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>



-- 
-Kevin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130516/26b3de13/attachment.html>


More information about the Rcpp-devel mailing list