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

Kevin Ushey kevinushey at gmail.com
Fri Jan 29 20:27:38 CET 2016


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.
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.

Kevin

On Fri, Jan 29, 2016 at 4:52 AM, Dirk Eddelbuettel <edd at debian.org> wrote:
>
> On 28 January 2016 at 21:47, Paul Johnson wrote:
> | Thanks.
> |
> | On Thu, Jan 28, 2016 at 2:42 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
> | >
> | > Paul,
> | >
> | > I can reproduce the segfault on Ubuntu 15.10, "everything current".
> | > Definitely a valid bug report, though a 30mb xlsx may not qualify as
> | > minimal.
> | >
> | I'm glad I did not attach it to an email, then :)
> |
> | The data xlsx provided by the client is about 2 times as big, I had a
> | GRA whittled it down for your entertainment.
> |
> | If we whittle xlsx file down to a few lines, it does not seg fault, apparently.
> |
> | I'm going crazy trying to downgrade R in Ubuntu see where that leads.
> | I was using 3.2.2 until a couple of days ago and I never saw a hint of
> | trouble from Rcpp or openxlsx.
>
> Sorry that is so frustrating, I know.  Maybe using clang++ can help as it did
> for KK on OS X.  (Though clang++ remains frustrating on Ubuntu as you have to
> fiddle with -I... switches.)
>
> Dirk
> |
> | > I won't have time to look at this for a while though so if you find that
> | > downgrading helps that may be your best bet.
> | >
> | > Thanks for the report.  I am so used to simple segfaults from ABI mixings
> | > (g++-5.* will do that for you...) that I called this wrongly at first.
> | >
> | > Dirk
> | >
> | > /tmp/pj/openxlsx_failure$ Rscript
> | > Reproducible_openxlsx_failure.R
> | > R version 3.2.3 (2015-12-10)
> | > Platform: x86_64-pc-linux-gnu (64-bit)
> | > Running under: Ubuntu 15.10
> | >
> | > locale:
> | >  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
> | >  LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
> | >  LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8
> | >   [8] LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C
> | >  LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
> | >
> | > attached base packages:
> | > [1] stats     graphics  grDevices utils     datasets  base
> | >
> | > other attached packages:
> | > [1] openxlsx_3.0.0
> | >
> | > loaded via a namespace (and not attached):
> | > [1] Rcpp_0.12.3.1 methods_3.2.3
> | >
> | >  *** caught segfault ***
> | >  address 0x7fd5b83d8038, cause 'memory not mapped'
> | >
> | > Traceback:
> | >  1: .Call("openxlsx_readWorkbook", v, r, string_refs, isDate, nRows,
> | >  colNames, skipEmptyRows, origin, clean_names, PACKAGE = "openxlsx")
> | >  2: read.xlsx.default("Failure_to_Import.xlsx", colNames = TRUE)
> | >  3: read.xlsx("Failure_to_Import.xlsx", colNames = TRUE)
> | > aborting ...
> | >
> | >
> | > --
> | > http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
> |
> |
> |
> | --
> | Paul E. Johnson
> | Professor, Political Science        Director
> | 1541 Lilac Lane, Room 504      Center for Research Methods
> | University of Kansas                 University of Kansas
> | http://pj.freefaculty.org              http://crmda.ku.edu
>
> --
> 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


More information about the Rcpp-devel mailing list