Hi Dirk and Kevin,

I have now rebuild the package using the code Dirk send me (i.e., using 
attributes) and the code still reliably crashes my R on Linux when using 
devtools (independent of RStudio), but not when installing via 
install.packages. When just using the code Dirk had send directly (i.e., 
outside a package) this does not happen.

Note that I had to minimally change the code Dirk had sent as I couldn't manage to use "using 
Eigen::" so had to preface every call to Eigen functions or structures with 
"Eigen::".

Following are the exact steps needed to crash R from a Linux console:

Thanks a lot,
Henrik

#######################

# get the package:
wget http://singmann.org/download/teaching/r/MPTbug_1.0.0.tar.gz
tar -zxvf MPTbug_1.0.0.tar.gz

# I first use devtools to build and then crash R:
cd MPTbug
R
require(devtools)
load_all(recompile = TRUE)
trigger()  #this crashes R, error message is given below, but the same as 
before.


### Compiling messages:
Loading MPTbug
Re-compiling MPTbug
'/usr/lib64/R/bin/R' --vanilla CMD INSTALL '/home/singmann/MPTbug' \
  --library='/tmp/Rtmp3vi8kf' --no-R --no-data --no-help --no-demo --no-inst  \
  --no-docs --no-exec --no-multiarch --no-test-load --preclean

* installing *source* package ‘MPTbug’ ...
** libs
g++ -m64 -I/usr/include/R -DNDEBUG -I. -I../inst/include -I/usr/local/include 
-I"/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/Rcpp/include" 
-I"/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include" -UNDEBUG -Wall 
-pedantic -g -O0 -fpic  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions 
-fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -flto 
-c RcppExports.cpp -o RcppExports.o
In file included from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/Cholesky:24:0,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/Dense:3,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/RcppEigenForward.h:30,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Cholesky/LDLT.h:
 In member function ‘void Eigen::internal::solve_retval<Eigen::LDLT<MatrixType, 
_UpLo>, Rhs>::evalTo(Dest&) const’:
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Cholesky/LDLT.h:505:39:
 warning: typedef ‘Scalar’ locally defined but not used 
[-Wunused-local-typedefs]
     typedef typename LDLTType::Scalar Scalar;
                                       ^
g++ -m64 -I/usr/include/R -DNDEBUG -I. -I../inst/include -I/usr/local/include 
-I"/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/Rcpp/include" 
-I"/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include" -UNDEBUG -Wall 
-pedantic -g -O0 -fpic  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions 
-fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -flto 
-c determinant2.cpp -o determinant2.o
In file included from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/Cholesky:24:0,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/Dense:3,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/RcppEigenForward.h:30,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/RcppEigen.h:25,
                 from determinant2.cpp:1:
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Cholesky/LDLT.h:
 In member function ‘void Eigen::internal::solve_retval<Eigen::LDLT<MatrixType, 
_UpLo>, Rhs>::evalTo(Dest&) const’:
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Cholesky/LDLT.h:505:39:
 warning: typedef ‘Scalar’ locally defined but not used 
[-Wunused-local-typedefs]
     typedef typename LDLTType::Scalar Scalar;
                                       ^
g++ -m64 -shared -Wl,-z,relro -o MPTbug.so RcppExports.o determinant2.o 
-L/usr/lib64/R/lib -lR
installing to /tmp/Rtmp3vi8kf/MPTbug/libs
* DONE (MPTbug)


### Error message (which is the same as from winbuilder/CRAN binary):
> trigger()
R: /home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Core/ProductBase.h:95: Eigen::ProductBase<Derived, Lhs, Rhs>::ProductBase(const Lhs&, 
const Rhs&) [with Derived = Eigen::GeneralProduct<Eigen::Matrix<double, 1, -1>, Eigen::Transpose<Eigen::Map<Eigen::Matrix<double, -1, -1> > >, 4>; 
Lhs = Eigen::Matrix<double, 1, -1>; Rhs = Eigen::Transpose<Eigen::Map<Eigen::Matrix<double, -1, -1> > >]: Assertion `a_lhs.cols() == a_rhs.rows() && 
"invalid matrix product" && "if you wanted a coeff-wise or a dot product use the respective explicit functions"' failed.
Aborted (core dumped)


#### However, when installing from the source package, everything works. See 
following code and compiler messages.

cd ..
R
install.packages("MPTbug_1.0.0.tar.gz", repos = NULL)
require(MPTbug)
trigger()


#### compiler:

> install.packages("MPTbug_1.0.0.tar.gz", repos = NULL)
Installing package into ‘/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1’
(as ‘lib’ is unspecified)
* installing *source* package ‘MPTbug’ ...
** libs
g++ -m64 -I/usr/include/R -DNDEBUG -I. -I../inst/include -I/usr/local/include 
-I"/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/Rcpp/include" 
-I"/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include" -fpic  -O2 -g 
-pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 
-grecord-gcc-switches  -m64 -mtune=generic -flto -c RcppExports.cpp -o RcppExports.o
In file included from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/Cholesky:24:0,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/Dense:3,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/RcppEigenForward.h:30,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Cholesky/LDLT.h:
 In member function ‘void Eigen::internal::solve_retval<Eigen::LDLT<MatrixType, 
_UpLo>, Rhs>::evalTo(Dest&) const’:
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Cholesky/LDLT.h:505:39:
 warning: typedef ‘Scalar’ locally defined but not used 
[-Wunused-local-typedefs]
     typedef typename LDLTType::Scalar Scalar;
                                       ^
g++ -m64 -I/usr/include/R -DNDEBUG -I. -I../inst/include -I/usr/local/include 
-I"/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/Rcpp/include" 
-I"/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include" -fpic  -O2 -g 
-pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 
-grecord-gcc-switches  -m64 -mtune=generic -flto -c determinant2.cpp -o determinant2.o
In file included from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/Cholesky:24:0,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/Dense:3,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/RcppEigenForward.h:30,
                 from 
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/RcppEigen.h:25,
                 from determinant2.cpp:1:
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Cholesky/LDLT.h:
 In member function ‘void Eigen::internal::solve_retval<Eigen::LDLT<MatrixType, 
_UpLo>, Rhs>::evalTo(Dest&) const’:
/home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/RcppEigen/include/Eigen/src/Cholesky/LDLT.h:505:39:
 warning: typedef ‘Scalar’ locally defined but not used 
[-Wunused-local-typedefs]
     typedef typename LDLTType::Scalar Scalar;
                                       ^
g++ -m64 -shared -Wl,-z,relro -o MPTbug.so RcppExports.o determinant2.o 
-L/usr/lib64/R/lib -lR
installing to /home/singmann/R/x86_64-redhat-linux-gnu-library/3.1/MPTbug/libs
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
  converting help for package ‘MPTbug’
    finding HTML links ... done
    trigger                                 html
** building package indices
** testing if installed package can be loaded
* DONE (MPTbug)





Am 16.10.2014 um 00:19 schrieb Dirk Eddelbuettel:
(Headers once more corrected)

On 15 October 2014 at 14:53, Kevin Ushey wrote:
|
|
|
| Hi Henrik,
|
| Thanks for putting this together. FWIW, I cannot reproduce this error
| (either with `trigger()` or `no_trigger()`) on OS X, nor when building
| from source on a Windows VM (while inside RStudio).
|
| I also tried running the address and undefined behavior sanitizers
| when executing the code and nothing was picked up.
|
| Can you post the compiler output you get when using
| `devtools::load_all()` vs. a regular `R CMD INSTALL` ? I wonder if the
| compile flags are somehow different and if that could lead to a
| problem.
|
| Can you also elaborate on how you can reproduce this on Linux? This is
| the environment we're most familiar with and so if we can reproduce
| there then we can most easily discover a solution. I wonder if using
| `gctorture(TRUE)` before running `trigger()` would make the assertion
| failure more likely.

I second Kevin's comments.  I have an outstanding request with Dortmund for
something regarding another package where I also suspect a configuration
issue; this may be as trivial as the Windows binary there being out of sync.

Your code seems fine.  Below is how I would write it, in a self-contained
short snippet you can just 'sourceCpp()' and which will even executed the
short R portion making it truly reproducible and self-contained.

It shows no issue.  This may be a one-off related to win-builder.

Thanks, Dirk



#include <RcppEigen.h>

using namespace Rcpp;

using Eigen::Map;
using Eigen::VectorXd;
using Eigen::RowVectorXd;
using Eigen::MatrixXd;

// [[Rcpp::depends(RcppEigen)]]

// [[Rcpp::export]]
int determinant2(int S, Map<MatrixXd> Ineq) {

     VectorXd thetaTMP = Rcpp::as<VectorXd>(rbeta(S, 0.5, 0.5));
     RowVectorXd theta = thetaTMP.transpose();

     VectorXd IneqT = (theta*Ineq.transpose());

     return 0;
}

/*** R
determinant2(2, matrix(1.0*(1:4),2,2))
*/



--
Dr. Henrik Singmann
PostDoc
Universität Zürich, Schweiz
http://singmann.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

Reply via email to