From bbolker at gmail.com  Wed Feb 22 23:35:18 2017
From: bbolker at gmail.com (Ben Bolker)
Date: Wed, 22 Feb 2017 17:35:18 -0500
Subject: [Rd] [Lme4-authors] Crash in the latest release
In-Reply-To: <f40b15$5spqkj@ironport10.mayo.edu>
References: <f40b15$5spqkj@ironport10.mayo.edu>
Message-ID: <CABghstS0K5s595GyxB1PLrCnSk79SGCO0Ldmu11K=iWc8BDLeQ@mail.gmail.com>

Thanks, posted to https://github.com/lme4/lme4/issues/412 for further
discussion ...

On Wed, Feb 22, 2017 at 10:03 AM, Therneau, Terry M., Ph.D.
<therneau at mayo.edu> wrote:
> 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)
>
>
> _______________________________________________
> Lme4-authors mailing list
> Lme4-authors at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/lme4-authors



[Rd] [Lme4-authors] Crash in the latest release
Ben Bolker