Skip to content

Hard crash of lme4 in R-devel

3 messages · Terry Therneau, Ivan Krylov

#
I ran across this by accident when working up an example.    It uses a data set from the survival package, but nothing else from there.  Fails on the Intel machine shown below, and on a virtual linux instance on a newer Mac.

Terry
Loading required package: Matrix
R Under development (unstable) (2024-06-14 r86747)
Platform: aarch64-unknown-linux-gnu
Running under: Ubuntu 22.04.4 LTS

Matrix products: default
BLAS:   /usr/local/src/R-devel/lib/libRblas.so
LAPACK: /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3.10.0

locale:
[1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8
 [4] LC_COLLATE=C           LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8
 [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C
[10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C

time zone: America/Chicago
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] lme4_1.1-35.1  Matrix_1.7-0   survival_3.6-6

loaded via a namespace (and not attached):
[1] minqa_1.2.5    MASS_7.3-60.2  compiler_4.5.0 Rcpp_1.0.11    splines_4.5.0
 [6] nlme_3.1-164   grid_4.5.0     nloptr_2.0.3   boot_1.3-30    lattice_0.22-6
-- more lines than I can capture --

= NULL, verbose = 0L,     control = list(optimizer = "nloptwrap", restart_edge = TRUE,         boundary.tol = 1e-05, calc.derivs = TRUE, use.last.params = FALSE,         checkControl = list(check.nobs.vs.rankZ = "ignore", check.nobs.vs.nlev = "stop",             check.nlev.gtreq.5 = "ignore", check.nlev.gtr.1 = "stop",             check.nobs.vs.nRE = "stop", check.rankX = "message+drop.cols",             check.scaleX = "warning", check.formula.LHS = "stop"),         checkConv = list(check.conv.grad = list(action = "warning",             tol = 0.002, relTol = NULL), check.conv.singular = list(            action = "message", tol = 1e-04), check.conv.hess = list(            action = "warning", tol = 1e-06)), optCtrl = list()))
10: do.call(mkLmerDevfun, c(lmod, list(start = start, verbose = verbose,     control = control)))
11: lmer(log(bili) ~ year + (1 + year | id), data4)

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection:
#
? Sat, 15 Jun 2024 02:04:31 +0000
"Therneau, Terry M., Ph.D. via R-devel" <r-devel at r-project.org> ?????:
I see you have a new Matrix (1.7-0 from 2024-04-26 with a new ABI) but
an older lme4 (1.1-35.1 from 2023-11-05).

I reproduced the crash and the giant backtrace by first installing
latest lme4 and then updating Matrix. With the latest version of lme4,
this results in a warning:

library(lme4)
# Loading required package: Matrix
# Warning message:
# In check_dep_version() : ABI version mismatch:
# lme4 was built with Matrix ABI version 1
# Current Matrix ABI version is 2
# Please re-install lme4 from source or restore original 'Matrix'
# package

The version of lme4 that you have installed doesn't have this check
because it only appeared in March 2024:
https://github.com/lme4/lme4/commit/8be641b7a1fd5b6e6ac962552add13e29bb5ff5b

The crash should go away if you update or at least reinstall lme4 from
source.
#
Thank you.? An update of lme4 fixed the issue.? No warning, no crash.
On 6/15/24 2:06 AM, Ivan Krylov wrote: