[Rd] Crash in the latest release
Therneau, Terry M., Ph.D.
therneau at mayo.edu
Wed Feb 22 16:03:51 CET 2017
I found this by accident yesterday. The program that crashes is the first two lines of
the example from the help page for nlmer. That example hasn't changed in a long time, so I
assumed that it is an R-devel issue. It could also be a long latent nlmer bug. The second
run with valgrind is puzzling.
Terry T.
> library(lmer)
> sessionInfo()
R Under development (unstable) (2017-02-21 r72241)
Platform: i686-pc-linux-gnu (32-bit)
Running under: Ubuntu 14.04.1 LTS
Matrix products: default
BLAS: /usr/local/src/R-devel/lib/libRblas.so
LAPACK: /usr/local/src/R-devel/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=C
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lme4_1.1-12 Matrix_1.2-8
loaded via a namespace (and not attached):
[1] minqa_1.2.4 MASS_7.3-46 compiler_3.4.0 tools_3.4.0
[5] Rcpp_0.12.9 splines_3.4.0 nlme_3.1-131 grid_3.4.0
[9] nloptr_1.0.4 lattice_0.20-34
> startvec <- c(Asym = 200, xmid = 725, scal = 350)
> (nm1 <- nlmer(circumference ~ SSlogis(age, Asym, xmid, scal) ~ Asym|Tree,
+ Orange, start = startvec))
*** Error in `/usr/local/src/R-devel/bin/exec/R': malloc(): memory corruption: 0x0e3df988 ***
Aborted (core dumped)
---------------------
The valgrind version is interesting too: it complains and then finishes!
tmt-local2437% R -d valgrind
==31901== Memcheck, a memory error detector
==31901== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==31901== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==31901== Command: /usr/local/src/R-devel/bin/exec/R
==31901==
R Under development (unstable) (2017-02-21 r72241) -- "Unsuffered Consequences"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: i686-pc-linux-gnu (32-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
[Previously saved workspace restored]
> library(lme4)
Loading required package: Matrix
> startvec <- c(Asym = 200, xmid = 725, scal = 350)
> (nm1 <- nlmer(circumference ~ SSlogis(age, Asym, xmid, scal) ~ Asym|Tree,
+ Orange, start = startvec))
==31901== Invalid write of size 4
==31901== at 0xA13DA20: cholmod_start (cholmod_common.c:184)
==31901== by 0xD8B3065: cholmod_start (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8B728D: Eigen::CholmodBase<Eigen::SparseMatrix<double, 0, int>, 1,
Eigen::CholmodDecomposition<Eigen::SparseMatrix<double, 0, int>, 1> >::CholmodBase() (in
/home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8B413D: Eigen::CholmodDecomposition<Eigen::SparseMatrix<double, 0,
int>, 1>::CholmodDecomposition() (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8B39B8: lme4::lme4CholmodDecomposition<Eigen::SparseMatrix<double, 0,
int>, 1>::lme4CholmodDecomposition() (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8AEBE4: lme4::merPredD::merPredD(SEXPREC*, SEXPREC*, SEXPREC*,
SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*,
SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*) (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8727F1: merPredDCreate (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0x80C0B9E: R_doDotCall (dotcode.c:648)
==31901== by 0x80C159F: do_dotcall (dotcode.c:1252)
==31901== by 0x80FFABA: Rf_eval (eval.c:728)
==31901== by 0x810308A: do_set (eval.c:2579)
==31901== by 0x80FF907: Rf_eval (eval.c:700)
==31901== Address 0xe310828 is 0 bytes after a block of size 2,408 alloc'd
==31901== at 0x402A6DC: operator new(unsigned int) (in
/usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==31901== by 0xD872770: merPredDCreate (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0x80C0B9E: R_doDotCall (dotcode.c:648)
==31901== by 0x80C159F: do_dotcall (dotcode.c:1252)
==31901== by 0x80FFABA: Rf_eval (eval.c:728)
==31901== by 0x810308A: do_set (eval.c:2579)
==31901== by 0x80FF907: Rf_eval (eval.c:700)
==31901== by 0x8101F20: do_begin (eval.c:2187)
==31901== by 0x80FF907: Rf_eval (eval.c:700)
==31901== by 0x810141B: R_execClosure (eval.c:1614)
==31901== by 0x80FF711: Rf_eval (eval.c:747)
==31901== by 0x8101F20: do_begin (eval.c:2187)
==31901==
==31901== Invalid write of size 4
==31901== at 0xA13DA31: cholmod_start (cholmod_common.c:184)
==31901== by 0xD8B3065: cholmod_start (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8B728D: Eigen::CholmodBase<Eigen::SparseMatrix<double, 0, int>, 1,
Eigen::CholmodDecomposition<Eigen::SparseMatrix<double, 0, int>, 1> >::CholmodBase() (in
/home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8B413D: Eigen::CholmodDecomposition<Eigen::SparseMatrix<double, 0,
int>, 1>::CholmodDecomposition() (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8B39B8: lme4::lme4CholmodDecomposition<Eigen::SparseMatrix<double, 0,
int>, 1>::lme4CholmodDecomposition() (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8AEBE4: lme4::merPredD::merPredD(SEXPREC*, SEXPREC*, SEXPREC*,
SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*,
SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*, SEXPREC*) (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0xD8727F1: merPredDCreate (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0x80C0B9E: R_doDotCall (dotcode.c:648)
==31901== by 0x80C159F: do_dotcall (dotcode.c:1252)
==31901== by 0x80FFABA: Rf_eval (eval.c:728)
==31901== by 0x810308A: do_set (eval.c:2579)
==31901== by 0x80FF907: Rf_eval (eval.c:700)
==31901== Address 0xe31082c is 4 bytes after a block of size 2,408 alloc'd
==31901== at 0x402A6DC: operator new(unsigned int) (in
/usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==31901== by 0xD872770: merPredDCreate (in /home/therneau/Rlib/lme4/libs/lme4.so)
==31901== by 0x80C0B9E: R_doDotCall (dotcode.c:648)
==31901== by 0x80C159F: do_dotcall (dotcode.c:1252)
==31901== by 0x80FFABA: Rf_eval (eval.c:728)
==31901== by 0x810308A: do_set (eval.c:2579)
==31901== by 0x80FF907: Rf_eval (eval.c:700)
==31901== by 0x8101F20: do_begin (eval.c:2187)
==31901== by 0x80FF907: Rf_eval (eval.c:700)
==31901== by 0x810141B: R_execClosure (eval.c:1614)
==31901== by 0x80FF711: Rf_eval (eval.c:747)
==31901== by 0x8101F20: do_begin (eval.c:2187)
==31901==
Nonlinear mixed model fit by maximum likelihood ['nlmerMod']
Formula: circumference ~ SSlogis(age, Asym, xmid, scal) ~ Asym | Tree
Data: Orange
AIC BIC logLik deviance df.resid
273.1438 280.9205 -131.5719 263.1438 30
Random effects:
Groups Name Std.Dev.
Tree Asym 31.646
Residual 7.843
Number of obs: 35, groups: Tree, 5
Fixed Effects:
Asym xmid scal
192.1 727.9 348.1
> q()
==31901==
==31901== HEAP SUMMARY:
==31901== in use at exit: 94,537,359 bytes in 46,733 blocks
==31901== total heap usage: 194,149 allocs, 147,416 frees, 248,586,365 bytes allocated
==31901==
==31901== LEAK SUMMARY:
==31901== definitely lost: 0 bytes in 0 blocks
==31901== indirectly lost: 0 bytes in 0 blocks
==31901== possibly lost: 0 bytes in 0 blocks
==31901== still reachable: 94,537,359 bytes in 46,733 blocks
==31901== suppressed: 0 bytes in 0 blocks
==31901== Rerun with --leak-check=full to see details of leaked memory
==31901==
==31901== For counts of detected and suppressed errors, rerun with: -v
==31901== ERROR SUMMARY: 3 errors from 2 contexts (suppressed: 0 from 0)
More information about the R-devel
mailing list