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? 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@lists.r-forge.r-project.org | | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel | | -- | http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org | _______________________________________________ | Rcpp-devel mailing list | Rcpp-devel@lists.r-forge.r-project.org | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel