首页 > 解决方案 > 记录 R 包时,devtools::document() 因段错误而崩溃

问题描述

我搜索了一整天,我不知道如何找出为什么会发生这种情况以及如何解决它。

当我devtools::document()在 RStudio 中运行一个新启动的项目(新目录中的一个包)时,我得到一个

*** caught segfault *** address 0x18, cause 'memory not mapped'

RStudio 崩溃了。

当我尝试从命令行执行此操作时也是如此。

这是完整的错误:

==> devtools::document(roclets=c('rd', 'collate', 'namespace', 'vignette'))


 *** caught segfault ***
address 0x18, cause 'memory not mapped'

Traceback:
 1: dyn.load(file, DLLpath = DLLpath, ...)
 2: library.dynam(lib, package, package.lib)
 3: loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]])
 4: namespaceImport(ns, loadNamespace(i, c(lib.loc, .libPaths()),     versionCheck = vI[[i]]), from = package)
 5: loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]])
 6: namespaceImport(ns, loadNamespace(i, c(lib.loc, .libPaths()),     versionCheck = vI[[i]]), from = package)
 7: loadNamespace(package, ...)
 8: doTryCatch(return(expr), name, parentenv, handler)
 9: tryCatchOne(expr, names, parentenv, handlers[[1L]])
10: tryCatchList(expr, classes, parentenv, handlers)
11: tryCatch(loadNamespace(package, ...), error = function(e) e)
12: requireNamespace(dep_name, quietly = TRUE)
13: check_dep_version(pkg, version, compare)
14: check_suggested("roxygen2")
15: devtools::document(roclets = c("rd", "collate", "namespace",     "vignette"))
16: withCallingHandlers(expr, packageStartupMessage = function(c) invokeRestart("muffleMessage"))
17: suppressPackageStartupMessages({    oldLC <- Sys.getlocale(category = "LC_COLLATE")    Sys.setlocale(category = "LC_COLLATE", locale = "C")    on.exit(Sys.setlocale(category = "LC_COLLATE", locale = oldLC))    devtools::document(roclets = c("rd", "collate", "namespace",         "vignette"))})
An irrecoverable exception occurred. R is aborting now ...

Exited with status 11.

这是结果sessionInfo()

> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.5

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

other attached packages:
[1] magrittr_1.5      data.table_1.11.4

loaded via a namespace (and not attached):
[1] compiler_3.4.2 tools_3.4.2    yaml_2.1.19  

当我在 IDE 中使用“文档”按钮时也会发生同样的情况。

可以构建包,但我使用 Roxygen 进行所有导入和导出。

我不知道如何解决这个问题。

一些选项是devtools::clean_dll()在 document() 之前使用并重新安装 devtools、roxygen2 和 Rcpp。

我尝试了所有这些但没有任何效果。

标签: rrstudiodevtoolsroxygen2

解决方案


推荐阅读