[Rcpp-devel] RcppEigen fails on win-builder i386, and a possibly related issue.

Dan Dillon dcdillon at gmail.com
Sun May 22 22:51:22 CEST 2016


Do you have the same version of mingw as cran?  If not , that would be a
good test
On May 22, 2016 3:49 PM, "François Rousset" <
francois.rousset at umontpellier.fr> wrote:

> Hi,
>
> Le 22/05/2016 à 22:16, Dirk Eddelbuettel a écrit :
>
>> On 22 May 2016 at 09:13, Dirk Eddelbuettel wrote:
>> |
>> | Hi Francois,
>> |
>> | Thanks for taking the time to track this down and to create an example.
>> | I just opened a GitHub issue for it:
>> |   https://github.com/RcppCore/RcppEigen/issues/34
>> | Feel free to comment there as well.
>>
>> In that thread on GH, Dan raises a good point:  what actually is the
>> supposed
>> error message?  What you have at the end of this long email isn't all that
>> clear and _still indirect_: "Running examples in 'minimalTest-Ex.R'
>> failed"
>>
>> For those of us without a windows 32bit machine at hand, can you (or
>> anybody
>> else) actually produce an error message?  Preferably with compiler output?
>>
> I never obtained a more useful error message. I have been running the CRAN
> checks routinely on my windows PC both for 32 and 64 bit builds without any
> problem. Compilation itself does not generate any particular message. Below
> are the screen logs on my PC:
>
> =========================================================
> ==> Rcmd.exe INSTALL --preclean --with-keep.source minimalTest
>
> * installing to library 'C:/Users/francois/Documents/R/win-library/3.4'
> * installing *source* package 'minimalTest' ...
> ** libs
>
> *** arch - i386
> "C:/Rtools/mingw_32/bin/"g++  -I"C:/PROGRA~1/R/R-devel/include" -DNDEBUG
> -I"C:/Users/francois/Documents/R/win-library/3.4/Rcpp/include"
> -I"C:/Users/francois/Documents/R/win-library/3.4/RcppEigen/include"
> -I"d:/Compiler/gcc-4.9.3/local330/include"     -O2 -Wall -mtune=core2 -c
> RcppExports.cpp -o RcppExports.o
> "C:/Rtools/mingw_32/bin/"g++  -I"C:/PROGRA~1/R/R-devel/include" -DNDEBUG
> -I"C:/Users/francois/Documents/R/win-library/3.4/Rcpp/include"
> -I"C:/Users/francois/Documents/R/win-library/3.4/RcppEigen/include"
> -I"d:/Compiler/gcc-4.9.3/local330/include"     -O2 -Wall -mtune=core2 -c
> spaMM_linear.cpp -o spaMM_linear.o
> C:/Rtools/mingw_32/bin/g++ -shared -s -static-libgcc -o minimalTest.dll
> tmp.def RcppExports.o spaMM_linear.o
> -Ld:/Compiler/gcc-4.9.3/local330/lib/i386
> -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-devel/bin/i386 -lR
> installing to
> C:/Users/francois/Documents/R/win-library/3.4/minimalTest/libs/i386
>
> *** arch - x64
> "C:/Rtools/mingw_64/bin/"g++  -I"C:/PROGRA~1/R/R-devel/include" -DNDEBUG
> -I"C:/Users/francois/Documents/R/win-library/3.4/Rcpp/include"
> -I"C:/Users/francois/Documents/R/win-library/3.4/RcppEigen/include"
> -I"d:/Compiler/gcc-4.9.3/local330/include"     -O3 -c RcppExports.cpp -o
> RcppExports.o
> "C:/Rtools/mingw_64/bin/"g++  -I"C:/PROGRA~1/R/R-devel/include" -DNDEBUG
> -I"C:/Users/francois/Documents/R/win-library/3.4/Rcpp/include"
> -I"C:/Users/francois/Documents/R/win-library/3.4/RcppEigen/include"
> -I"d:/Compiler/gcc-4.9.3/local330/include"     -O3 -c spaMM_linear.cpp -o
> spaMM_linear.o
> C:/Rtools/mingw_64/bin/g++ -shared -s -static-libgcc -o minimalTest.dll
> tmp.def RcppExports.o spaMM_linear.o
> -Ld:/Compiler/gcc-4.9.3/local330/lib/x64
> -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-devel/bin/x64 -lR
> installing to
> C:/Users/francois/Documents/R/win-library/3.4/minimalTest/libs/x64
> ** R
> ** byte-compile and prepare package for lazy loading
> ** help
> *** installing help indices
> ** building package indices
> ** testing if installed package can be loaded
> *** arch - i386
> *** arch - x64
> * DONE (minimalTest)
> =========================================================
> ==> Rcmd.exe build minimalTest
>
> * checking for file 'minimalTest/DESCRIPTION' ... OK
> * preparing 'minimalTest':
> * checking DESCRIPTION meta-information ... OK
> * cleaning src
> * checking for LF line-endings in source and make files
> * checking for empty or unneeded directories
> * building 'minimalTest_1.1.3.tar.gz'
>
> ==> Rcmd.exe check minimalTest_1.1.3.tar.gz
>
> * using log directory
> 'C:/home/francois/travail/stats/CRANhell/minimalTest.Rcheck'
> * using R Under development (unstable) (2016-05-14 r70617)
> * using platform: x86_64-w64-mingw32 (64-bit)
> * using session charset: ISO8859-1
> * checking for file 'minimalTest/DESCRIPTION' ... OK
> * checking extension type ... Package
> * this is package 'minimalTest' version '1.1.3'
> * package encoding: UTF-8
> * checking package namespace information ... OK
> * checking package dependencies ... OK
> * checking if this is a source package ... OK
> * checking if there is a namespace ... OK
> * checking for executable files ... OK
> * checking for hidden files and directories ... OK
> * checking for portable file names ... OK
> * checking whether package 'minimalTest' can be installed ... [21s] OK
> * checking installed package size ... OK
> * checking package directory ... OK
> * checking DESCRIPTION meta-information ... OK
> * checking top-level files ... OK
> * checking for left-over files ... OK
> * checking index information ... OK
> * checking package subdirectories ... OK
> * checking R files for non-ASCII characters ... OK
> * checking R files for syntax errors ... OK
> * loading checks for arch 'i386'
> ** checking whether the package can be loaded ... OK
> ** checking whether the package can be loaded with stated dependencies ...
> OK
> ** checking whether the package can be unloaded cleanly ... OK
> ** checking whether the namespace can be loaded with stated dependencies
> ... OK
> ** checking whether the namespace can be unloaded cleanly ... OK
> ** checking loading without being on the library search path ... OK
> * loading checks for arch 'x64'
> ** checking whether the package can be loaded ... OK
> ** checking whether the package can be loaded with stated dependencies ...
> OK
> ** checking whether the package can be unloaded cleanly ... OK
> ** checking whether the namespace can be loaded with stated dependencies
> ... OK
> ** checking whether the namespace can be unloaded cleanly ... OK
> ** checking loading without being on the library search path ... OK
> * checking dependencies in R code ... OK
> * checking S3 generic/method consistency ... OK
> * checking replacement functions ... OK
> * checking foreign function calls ... OK
> * checking R code for possible problems ... OK
> * checking Rd files ... OK
> * checking Rd metadata ... OK
> * checking Rd cross-references ... OK
> * checking for missing documentation entries ... OK
> * checking for code/documentation mismatches ... OK
> * checking Rd \usage sections ... OK
> * checking Rd contents ... OK
> * checking for unstated dependencies in examples ... OK
> * checking line endings in C/C++/Fortran sources/headers ... OK
> * checking compiled code ... OK
> * checking examples ...
> ** running examples for arch 'i386' ... [0s] OK
> ** running examples for arch 'x64' ... [0s] OK
> * checking PDF version of manual ... OK
> * DONE
> Status: OK
>
> R CMD check succeeded
> ===============================================
>
>> Dirk
>>   | On 22 May 2016 at 12:09, François Rousset wrote:
>> | | Hi,
>> | |
>> | | RcppEigen no longer passes the CRAN checks for Windows i386
>> architecture:
>> | | https://cran.r-project.org/web/checks/check_results_RcppEigen.html
>> | | This problem seems to have appeared in the middle of last month,
>> | | presumably following some change on CRAN.
>> | |
>> | | A similar problem appeared at the same time in some packages I
>> maintain,
>> | | which link to RcppEigen. For one package, execution stops on a line of
>> | | the form
>> | | MatrixXd
>> | |
>> someMatrix(MatrixXd(nb,nb).setZero().selfadjointView<Lower>().rankUpdate(
>> | | anotherMatrix ));
>> | | I have reduced the code causing the error to a small reproducible
>> | | example, and since I can reproduce the error only on the win-builder
>> | | service on CRAN, not on my Windows PC, this example takes the form of
>> a
>> | | package 'minimalTest'. It can be downloaded from
>> | | http://kimura.univ-montp2.fr/~rousset/minimalTest_1.1.3.tar.gz.
>> | |
>> | | I hope the following may help in correcting RcppEigen (as I think I
>> can
>> | | circumvent the problem in my package), but I am also curious whether I
>> | | am missing some obvious error in my code.
>> | |
>> | | In this small example, the checks fail (on Windows i386 only; the
>> | | relevant part of the check log is pasted at the end of this message)
>> | | when executing
>> | |
>> | | mini(14)
>> | |
>> | | where the mini() function is
>> | |
>> | | // [[Rcpp::export]]
>> | | int mini( int nb ){
>> | |    MatrixXd swZ(nb,nb);
>> | |    swZ.setZero();
>> | |    Rcout <<"Trivial code:
>> | | swZ.selfadjointView<Lower>().rankUpdate(swZ):"<<std::endl;
>> | |    swZ.selfadjointView<Lower>().rankUpdate(swZ);
>> | |    Rcout << "after minimal test. "<<std::endl; // not printed when
>> error
>> | | occurs
>> | |    return(0);
>> | | }
>> | |
>> | | However, the problem occurs only when two other functions, derived
>> from
>> | | more meaningful functions in the original package, are included in the
>> | | sources (yet are not called by the tests):
>> | |
>> | | // [[Rcpp::export]]
>> | | List unusedFn1( SEXP XX ) {
>> | |    const MappedSparseMatrix<double> X(as<MappedSparseMatrix<double>
>> >(XX));
>> | |    SparseQR<SparseMatrix<double, Eigen::ColMajor>,
>> | | Eigen::COLAMDOrdering<int> > spQR(X);
>> | |    SparseMatrix<double> Q_ap(5,5);
>> | |    Q_ap.setZero();
>> | |    List out = List::create(Named("Q_ap") = Q_ap);
>> | |    return(out);
>> | | }
>> | |
>> | | // [[Rcpp::export]]
>> | | SEXP unusedFn2( SEXP ZZ ) {
>> | |    const Map<MatrixXd> Z(as<Map<MatrixXd> >(ZZ));
>> | |    int c(Z.cols());
>> | |    if (c==0) return(wrap(MatrixXd(0,0)));
>> | |    MatrixXd bidon(MatrixXd(c,c).setZero());
>> | |    MatrixXd
>> | |
>> swZ(MatrixXd(c,c).setZero().selfadjointView<Lower>().rankUpdate(bidon.transpose()));
>> | |    return(wrap(swZ));
>> | | }
>> | |
>> | | The problem does not occur if either of these two functions is removed
>> | | from the sources. I found that I could resolve the problem in my
>> | | original package by removing any Eigen::SparseMatrix-related code from
>> | | it. Much as in the checks for the small example package, that code was
>> | | not called in the checks for my original package.
>> | |
>> | | The small example package does not contain other C++ or R functions
>> | | (except those generated automatically by Rcpp).
>> | |
>> | | Can anyone make sense of this?
>> |
>> | The fact that inclusion of other code, which is not called and should be
>> | optimized away, is involved is really, really weird.
>> |
>> | All I can think of so far is maybe some macro going haywire?
>> |
>> | Dirk
>> |
>> | | Thanks in advance,
>> | |
>> | | F.R.
>> | |
>> | | ==============================================
>> | | ** running examples for arch 'i386' ... ERROR
>> | | Running examples in 'minimalTest-Ex.R' failed
>> | | The error most likely occurred in:
>> | |
>> | |  > base::assign(".ptime", proc.time(), pos = "CheckExEnv")
>> | |  > ### Name: mini
>> | |  > ### Title: Test RcppEigen code
>> | |  > ### Aliases: mini unusedFn1 unusedFn2
>> | |  >
>> | |  > ### ** Examples
>> | |  >
>> | |  > sessionInfo()
>> | | R Under development (unstable) (2016-05-21 r70655)
>> | | Platform: i386-w64-mingw32/i386 (32-bit)
>> | | Running under: Windows Server 2008 x64 (build 6002) Service Pack 2
>> | |
>> | | locale:
>> | | [1] LC_COLLATE=C                 LC_CTYPE=German_Germany.1252
>> | | [3] LC_MONETARY=C                LC_NUMERIC=C
>> | | [5] LC_TIME=C
>> | |
>> | | attached base packages:
>> | | [1] stats     graphics  grDevices utils     datasets  methods   base
>> | |
>> | | other attached packages:
>> | | [1] minimalTest_1.1.3
>> | |
>> | | loaded via a namespace (and not attached):
>> | | [1] Rcpp_0.12.5
>> | |  > mini(14)
>> | | Trivial code: swZ.selfadjointView<Lower>().rankUpdate(swZ):
>> | | ** running examples for arch 'x64' ... [1s] OK
>> | | * checking PDF version of manual ... OK
>> | | * DONE
>> | | ===============================================
>> | | _______________________________________________
>> | | 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
>> |
>> | --
>> | 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
>>
>>
> _______________________________________________
> 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/20160522/9f6bc40a/attachment-0001.html>


More information about the Rcpp-devel mailing list