[Rcpp-devel] Possible regression in R-3.2.3 or Rcpp 0.12.3

Dirk Eddelbuettel edd at debian.org
Sat Jan 30 00:16:10 CET 2016


On 29 January 2016 at 17:55, Qiang Kou wrote:
| Hi, Paul, can you try my fork of Rcpp? You can install it by the line below:
| 
| devtools::install_github("thirdwing/Rcpp", ref = "subsetter")
| 
| This fixed the segfault on my Ubuntu machine.

Yay. Nice work!
 
| The difference can be found from [1].

Nice and concise.
 
| In subsetter, if an IntegerVector passed in, we will try to reuse it. This led
| to a segfault in this case, which I don't know why.
| 
| Dirk and Kevin, do you have any thoughts on it?

Not really, but happy to give this the full reverse-dependency check
treatment so that we can merge it.

Dirk

 
| Best wishes,
| 
| KK
| 
| [1] https://github.com/thirdwing/Rcpp/commit/
| 216c5220bcb84778a656b3496d0f1803b973ef61
| 
| 
| On Fri, Jan 29, 2016 at 3:00 PM, Qiang Kou <qkou at umail.iu.edu> wrote:
| 
| 
|     Hi, Kevin, I was also trying to track this down yesterday.
| 
|     From the debugging info below, indices_n is not equal to length of indices,
|     which I don't quite understand.
| 
|     Program received signal SIGSEGV, Segmentation fault.
| 
|     0x00007ffff2ed5c4e in Rcpp::SubsetProxy<13, Rcpp::PreserveStorage, 13,
|     true, Rcpp::sugar::Minus_Vector_Primitive<13, true, Rcpp::Vector<13,
|     Rcpp::PreserveStorage> > >::get_vec (this=this at entry=0x7fffffff79a0)
| 
|         at /usr/local/lib/R/site-library/Rcpp/include/Rcpp/vector/
|     Subsetter.h:200
| 
|     199             output[i] = lhs[ indices[i] ];
| 
|     (gdb) p i
| 
|     $1 = 33622
| 
|     (gdb) p indices[i]
| 
|     Cannot access memory at address 0x34c6e000
| 
|     (gdb) p indices_n
| 
|     $2 = 9594546
| 
| 
|     On Fri, Jan 29, 2016 at 2:29 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
| 
|        
|         On 29 January 2016 at 11:27, Kevin Ushey wrote:
|         | When I add some debug printing to the associated subscripting line
|         | (https://github.com/awalker89/openxlsx/blob/
|         b92bb3acdd6ea759be928c298c6faeef2f26fa3e/src/cppFunctions.cpp#L2608),
|         | I see:
|         |
|         |    colNumbers.size(): 98,03,150
|         |    charCols.size(): 95,94,546
|         |
|         | It looks to me like the package is erroneously attempting to subset
|         | vectors of different sizes, causing out-of-bounds reads.
| 
|         Nice work.
|        
|         | Unfortunately, Rcpp is not detecting or warning about this...
|         |
|         | Either way, I believe this is a bug in the openxlsx package, but Rcpp
|         | should be checking / reporting this.
| 
|         With (Rcpp)Armadillo you do have an option of turning this on/off. With
|         Rcpp
|         alone not quite.
|        
|         Dirk
|        
|         --
|         http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
|         _______________________________________________
|         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
| 
| 
| 
| 
|     --
|     Qiang Kou
|     qkou at umail.iu.edu
|     School of Informatics and Computing, Indiana University
| 
| 
| 
| 
| 
| --
| Qiang Kou
| qkou at umail.iu.edu
| School of Informatics and Computing, Indiana University
| 

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list