[Rcpp-devel] Fwd: CRAN submission growfunctions 0.1

Dirk Eddelbuettel edd at debian.org
Sun Aug 10 01:14:13 CEST 2014


Terrance,

On 9 August 2014 at 18:23, terrance savitsky wrote:
| Hi Dirk, The revised version of this toy package, sparseList, does exactly what
| you request.  I've included a data set that is of the same construction (of
| dgCMatrix elements from R::Matrix wrapped into a list object) and have added
| both an example and test that call this data.  The package is minimal, with a
| simple .cpp function (that reads in the list of dgCMatrix objects and
| writes the elements to an arma::field<arma:sp_mat>)  to isolate the source of
| the error in growfunctions.
|  
| I attach the tarball, which you may also access through the following URL:
|  
| https://drive.google.com/file/d/
| 0B0DIDcaf6yMwZDRDZUNLd0lBbmZ3OHlHSzIyeV9hZ3RxZ0xr/edit?usp=sharing

Did not work via wget, required a webpage visit and download. 

Package has extraneous dependencies (you do not need testthat to call a function).

Moreover, testthat seems to pivot over to /usr/bin/R rather than Rdevel (not
your issues, but you're not helping as it is not a minimally reproducible
example). 

You also still import / depend on spam. Why?

| I hope this gives you what you need and thanks very much for looking into this.

I does blow up when I do

   > library(sparseList)
   Loading required package: Rcpp
   > data(C)
   > sparse_list <- manip_sparseList(C)

and it similarly blows up when R CMD check runs the examples.



But the question is whether your code which does 

    ## ...

    ## convert to dcgmatrices (under Matrix package) required for sparse representation
    ## as sp_mats in RcppArmadillo
    C[[k]]               <- as(C[[k]], "dgCMatrix") 


creates a valid dgCMatrix. I do not know.  

RcppArmadillo is used by 77 packages on CRAN.  Prof Ripley checks all of
those via valgrind and ASAN.  Only yours threw an error.  

I am not yet convinced this is our issue. I could of course be wrong.  

Anyway, I won't be able to look at this for few days. Moreover, I do not use
sparse matrices -- so you may need to rely on someone else to debug this for
you, or do it yourself.

Sorry, Dirk

|  
| Terrance
|| [icon_10_ge] sparseList_1.1.tar.gz
|| 
| 
| On Sat, Aug 9, 2014 at 5:25 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
| 
| 
|     Hi Terrance,
| 
|     On 9 August 2014 at 16:58, terrance savitsky wrote:
|     | Hi Guys, 
|     |  
|     | I embed a data list object of dgCMatrix elements (produced in the same
|     manner
|     | as used in package, growfunctions) in an .RData file located in the
|     sparseList
|     | \data folder. I'm not sure what script and data ASAN uses to conduct the
|     memory
|     | check.  I'm guessing the package examples are run.  So I added an example
|     that
|     | loads the .RData object embedded with this toy package, sparseList. 
|     Please
|     | pardon me if my understanding is off.   I also embedd an R script in the
|     single
| 
|     It's not complicated.
| 
|     'R CMD check' needs a code path that does this, which can be as simple as
|     an
|     example section in the manual page (mayne you meant this by 'added an
|     example').  Or something tickled via a test script in tests/.
| 
|     You submitted a CRAN package. It has testable code. It failed. We now need
|     a
|     _minimal reproducible example_, ideally without a long tail of
|     dependencies,
|     to examine it.
| 
|     | toy package .cpp file that generates the same data (list object of
|     dgCMatrix
|     | objects created using R::Matrix) and runs an example.
|     |  
|     | Terrance
|     | ​
|     |
|     | [icon_10_ge] sparseList_1.1.tar.gz
| 
|     Can you update to a version which loads data and passes down to the code
|     which was seen to tickle this?
| 
|     And then place it somewhere where we can get it with a simple wget or curl
|     call.
| 
|     Thanks, Dirk
|      ​
| 
|     |
|     | On Sat, Aug 9, 2014 at 3:02 PM, Kevin Ushey <kevinushey at gmail.com> wrote:
|     |
|     |     Hi Terrance,
|     |
|     |     Can you please try to construct a reproducible example based on the
|     |     (tagged, potentially offending) line of code -- that is,
|     |
|     |         #4 0x7f79b6541df0 in IGMRFDPMIX
|     |     /data/gannet/ripley/R/packages/tests-49x/growfunctions/src/
|     dpmix.cpp:63
|     |
|     |     which has the line:
|     |
|     |         C(k,0)          = as<sp_mat>(Cr[k]);
|     |
|     |     Can you construct a small, reproducible example using objects 'C',
|     |     'Cr' as you construct in the package, and then see if that gives a
|     |     similar error?
|     |
|     |     Preferably you can construct this using Rcpp Attributes, so an
|     example
|     |     of the form
|     |
|     |         // [[Rcpp::depends(RcppArmadillo)]]
|     |
|     |         #include <RcppArmadillo.h>
|     |         using namespace Rcpp;
|     |
|     |         // [[Rcpp::export]]
|     |         SEXP test(SEXP C, SEXP Cr) {
|     |           ... use C, Cr as above...
|     |         }
|     |
|     |         /*** R
|     |         ... construct C, Cr on the R side as necessary ...
|     |         */
|     |
|     |     That way, we can 'sourceCpp' it and immediately investigate.
|     |
|     |     Thanks,
|     |     Kevin
|     |
|     |     On Sat, Aug 9, 2014 at 11:31 AM, terrance savitsky <tds151 at gmail.com>
|     |     wrote:
|     |     > Dirk,  Thanks much for taking the time to investigate this issue.
|      I've
|     |     > created a package (sparseList_1.0.tar.gz) with a minimal example of
|     what
|     |     > writing from a list of dgCMatrix matrices at the R layer to a field
|     |     <sp_mat>.
|     |     > I had intended to install boot2docker and use load your R-devel
|     set-up to
|     |     a
|     |     > container so that I could replicate the ASAN-generated error.  Its
|     taking
|     |     me
|     |     > longer than I'd hoped, however, so - for now - I include the
|     package
|     |     tarball
|     |     > with the minimal example and also an R script
|     (sparse_list_to_field.R) so
|     |     > that you may see what the function does.
|     |     > Terrance
|     |     >  sparse_list_to_field.R
|     |     >
|     |     >  sparseList_1.0.tar.gz
|     |     >
|     |     >
|     |     >
|     |     > On Sat, Aug 9, 2014 at 11:50 AM, Dirk Eddelbuettel <edd at debian.org>
|     |     wrote:
|     |     >>
|     |     >>
|     |     >> Terrance,
|     |     >>
|     |     >> So I took a look with one of the prebuilt versions of R using the
|     Docker
|     |     >> container I prepare (see the blog / sanitizers write-up I linked
|     to) as
|     |     I
|     |     >> realized that we had a Rcpp Gallery post similar to what that as<>
|     |     >> conversion
|     |     >> does.
|     |     >>
|     |     >> And no issue with that code.
|     |     >>
|     |     >> From a brief look at your package it seems like you are pushing
|     the
|     |     >> envelope
|     |     >> a lot harder with fields and list of sparse matrices ( in
|     dpmix.cpp,
|     |     where
|     |     >> another ASAN log pointed to ) so you may have to debug around
|     there.
|     |     >>
|     |     >> A small reproducible example would surely help us. So far I don't
|     have
|     |     one
|     |     >> for as<sp_mat>.
|     |     >>
|     |     >> Dirk
|     |     >>
|     |     >> --
|     |     >> http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
|     |     >
|     |     >
|     |     >
|     |     >
|     |     > --
|     |     > Thank you, Terrance Savitsky
|     |     >
|     |     > _______________________________________________
|     |     > 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
|     |
|     |
|     |
|     |
|     | --
|     | Thank you, Terrance Savitsky
| 
|     --
|     http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
| 
| 
| 
| 
| --
| Thank you, Terrance Savitsky

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


More information about the Rcpp-devel mailing list