【发布时间】:2019-08-21 03:58:12
【问题描述】:
我在将包加载到 CRAN 时遇到问题。我正在使用 R Studio 构建我的包和一些用于优化的低级 C 代码。在 R Studio 中,我可以毫无问题地加载/构建/检查我的包(我使用的是 Mac btw)。但是,当我构建包并将其提交给 CRAN 时,它被以下内容拒绝:
Flavor: r-devel-windows-ix86+x86_64
Check: running examples for arch 'x64', Result: ERROR
查看为我提供的日志后,这些示例在 Debian 和 windows i386 上运行得非常好。
有没有人知道为什么我的示例在 x64 上失败但在 i386 上工作正常?
下面是00check.log中的代码:
** running examples for arch 'i386' ... OK
** running examples for arch 'x64' ... ERROR
Running examples in 'fastcmprsk-Ex.R' failed
The error most likely occurred in:
.
.
.
> ### ** Examples
>
> library(fastcmprsk)
>
> set.seed(10)
> ftime <- rexp(200)
> fstatus <- sample(0:2, 200, replace = TRUE)
> cov <- matrix(runif(1000), nrow = 200)
> dimnames(cov)[[2]] <- c('x1','x2','x3','x4','x5')
> fit <- fastCrr(Crisk(ftime, fstatus) ~ cov, variance = FALSE)
* DONE
Status: 1 ERROR, 1 NOTE
我被引导相信罪魁祸首是fastCrr 函数。但是,该示例对于 arch 'i386'(见上文)和 Debian 似乎运行良好。我不明白为什么 x64 会失败,是否存在我不知道的硬件问题?我正在调用的函数调用C 进行优化例程。也许某处有泄漏,但我仔细检查并确保我 Free 每个 Calloc 变量。我不确定还有其他什么方式会发生泄漏,或者为什么它只会针对一个系统而不是另一个系统。
希望这会有所帮助。
感谢所有查看此内容的人以及您的反馈。
【问题讨论】:
-
您可以使用
rhub::check_with_valgrind来检查内存问题。 -
x64 Windos 在
long的大小方面是“奇数”,c.f. stackoverflow.com/a/384672/8416610。也许如果有一些隐含的假设?没有看到minimal reproducible example就不可能说更多。 -
@RalfStubner 给出可重现示例的最佳方法是什么? R 包是作为 .tar.gz 构建的,但我怀疑我可以将它上传到这里。任何帮助,将不胜感激。此外,check_with_valgrind 没有显示任何问题(示例运行良好)但是当我执行
R CMD check --as-cran --use-valgrind ~/GitHub/fastcmprsk_1.0.3.tar.gz时,它在示例中失败并出现以下错误:valgrind: mmap-FIXED(0x7fff5f400000, 8388608) failed in UME (load_unixthread1) with error 22 (Invalid argument). -
错误是否可以用(最好)
rhub::check_on_windows或devtools::check_win_devel重现?如果它是可重现的,您可以在仍然产生错误的同时尽可能减少代码。最后,一个简短的.R和一个简短的.c字段应该是产生错误所需的全部内容。否则,您可以将源代码上传到 GitHub 或 GitLab 等代码托管平台,并在此处发布链接。 -
@RalfStubner 代码本身在 GitHub 上:github.com/erickawaguchi/fastcmprsk(分支开发人员)