[Rcpp-devel] Segfault error during simulation in Rcpp
Matteo Fasiolo
matteo.fasiolo at gmail.com
Thu May 16 19:16:09 CEST 2013
Correction: as said by Brian it crashes also without --vanilla:
teo at oracolo:~$ R
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)
[...]
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
>
>
> library(Rcpp)
> sourceCpp("~/Desktop/b.cpp")
>
> 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]
But not always, while with --vanilla it always crashes.
On Thu, May 16, 2013 at 5:56 PM, Xiao He <praguewatermelon at gmail.com> wrote:
> I tried it just now. Did not crash on my R. Mmm
>
> myFun =cppFunction('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;
> + }')
> > 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]
> + }
> >
>
>
> On Thu, May 16, 2013 at 9:40 AM, Jonathan Olmsted <jolmsted at princeton.edu>wrote:
>
>> 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
>>>
>>
>>
>> _______________________________________________
>> 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
>>
>
>
> _______________________________________________
> 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/7333a3ca/attachment-0001.html>
More information about the Rcpp-devel
mailing list