[Rcpp-devel] Segfault error during simulation in Rcpp
Jonathan Olmsted
jolmsted at princeton.edu
Thu May 16 18:40:51 CEST 2013
Ditto Kevin's comment. I segfault no matter what.
> sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-apple-darwin12.3.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
-------------------------------------------------------------------------
J.P. Olmsted
029 Corwin (Office)
130 Corwin Hall (Mail)
Politics Department
Princeton University
Princeton, NJ 08544
t: 609.258.6202
f: 609.258.1110
jolmsted at princeton.edu
http://about.me/olmjo
-------------------------------------------------------------------------
On Thu, May 16, 2013 at 12:38 PM, Kevin Ushey <kevinushey at gmail.com> wrote:
> 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
>
> _______________________________________________
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130516/28e00bf2/attachment-0001.html>
More information about the Rcpp-devel
mailing list