“/usr/lib/rstudio/bin/rsession”中的 R lme4 错误:malloc():内存损坏:

R lme4 Error in '/usr/lib/rstudio/bin/rsession' : malloc(): memory corruption:

每当我从 lme4 包中 运行 lmerglmer 时,我都会收到以下错误:

Error in '/usr/lib/rstudio/bin/rsession' : malloc(): memory corruption:

我更新了所有 R 包,但仍然出现相同的错误。

sessionInfo()

R version 3.3.2 (2016-10-31)
Platform: i686-pc-linux-gnu (32-bit)
Running under: Ubuntu 16.04.2 LTS

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             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-13  Matrix_1.2-8

loaded via a namespace (and not attached):
[1] minqa_1.2.4     MASS_7.3-45     tools_3.3.2     Rcpp_0.12.9     splines_3.3.2  
[6] nlme_3.1-131    grid_3.3.2      nloptr_1.0.4    lattice_0.20-34

已编辑

library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)

抛出以下错误:

Error in '/usr/lib/rstudio/bin/rsession' : malloc(): memory corruption:

可能是 Ubuntu 更新的问题。我遇到了同样的问题,但在对 Ubuntu 基地进行最新更新后,问题得到了解决。

有报告称最新的 Matrix 软件包 1.2-8 在 32 位 OS 上存在问题(来自 Terry Therneau 和 Brian Ripley 的个人通信)。修复 可能正在路上 可能需要一段时间(个人通信,M. Maechler),所以我会尝试将 Matrix 降级到版本 1.2-7,例如devtools::install_version("Matrix","1.2-7")(需要安装编译工具)

查看 Matrix 的 NEWS file,我怀疑这与以下内容有关:

  • C-API: SuiteSparse_long is now defined as int64_t on all platforms, and we now include (C99) ‘inttypes.h’

在我(Matrix的维护者)诊断并解决问题的时间内:

Matrix 1.2-8 已更新其 API,但 RcppEigen 复制了 Matrix 的部分 C API(headers 等)...现在没有不再兼容...仅在 32 位上。

与此同时,RcppEigen 已更新(还有 Matrix)。 请安装这两个的最新版本,所有此类 lme4 问题应该都会消失。