Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R包无法在x64上运行示例,但可以在i386和Debian上运行_R_R Package - Fatal编程技术网

R包无法在x64上运行示例,但可以在i386和Debian上运行

R包无法在x64上运行示例,但可以在i386和Debian上运行,r,r-package,R,R Package,我在把包裹装到起重机上时遇到了麻烦。我正在使用R Studio构建我的包和一些用于优化的低级C代码。在R Studio中,我能够毫无问题地加载/构建/检查我的包(顺便说一句,我使用的是Mac)。但是,当我构建包并将其提交给CRAN时,它被拒绝,原因如下: Flavor:r-devel-windows-ix86+x86\u 64 检查:运行arch“x64”的示例,结果:错误 在查看为我提供的日志后,这些示例在Debian和WindowsI386上运行得非常好 有人知道为什么我的示例在x64上失

我在把包裹装到起重机上时遇到了麻烦。我正在使用R Studio构建我的包和一些用于优化的低级C代码。在R Studio中,我能够毫无问题地加载/构建/检查我的包(顺便说一句,我使用的是Mac)。但是,当我构建包并将其提交给CRAN时,它被拒绝,原因如下:

Flavor:r-devel-windows-ix86+x86\u 64
检查:运行arch“x64”的示例,结果:错误
在查看为我提供的日志后,这些示例在Debian和WindowsI386上运行得非常好

有人知道为什么我的示例在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
**arch“i386”的运行示例。。。好啊
**arch“x64”的运行示例。。。错误
在“fastcmprsk-Ex.R”中运行示例失败
错误很可能发生在:
.
.
.
>####**示例
> 
>图书馆(fastcmprsk)
> 
>种子(10)

>ftime fstatus cov dimnames(cov)[[2]]fit使用
wch1/r-debug
docker映像,我已经在您的代码上运行了UBSAN工具。gcc的人发现了一些东西:

ralf@barra:~$ docker run --rm -it wch1/r-debug
root@9131acbabe1f:/# git clone https://github.com/erickawaguchi/fastcmprsk
root@9131acbabe1f:/# cd fastcmprsk/
root@9131acbabe1f:/fastcmprsk# git checkout developer
root@9131acbabe1f:/fastcmprsk# cd -
root@9131acbabe1f:/# RDsan -e "install.packages(c('doParallel', 'dynpred', 'codetools', 'survival'))"
root@9131acbabe1f:/# RDsan CMD build fastcmprsk
root@9131acbabe1f:/# RDsan CMD check fastcmprsk_1.0.3.tar.gz 
[...]
==5515==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6180002383d0 at pc 0x7ff3b5ad8d3f bp 0x7ffebeb2bb90 sp 0x7ffebeb2bb80  
READ of size 4 at 0x6180002383d0 thread T0
    #0 0x7ff3b5ad8d3e in ccd_dense /fastcmprsk.Rcheck/00_pkg_src/fastcmprsk/src/denseFit.c:148
的确,至少
您正在通过数组边界读取
ici
,因为测试
i==(n-1)
是在测试
ici[i+1]!=1
。我将从这里开始,尽管我不确定为什么这会导致x64 Windows上出现确定性故障

您可以使用
rhub::check_with_valgrind
检查内存问题。对于
long
,c.f.的大小,x64 Windos是“奇数”。也许你有一些隐含的假设?如果不看一个例子,就不可能说得更多。@RalfStubner给出一个可复制的例子的最佳方式是什么?R包是作为.tar.gz构建的,但我怀疑我能否将其上传到这里。任何帮助都将不胜感激。此外,使用_valgrind检查没有显示任何问题(示例运行良好),但是当我执行
R CMD检查时——作为cran——使用valgrind~/GitHub/fastcmprsk_1.0.3.tar.gz
时,它在示例中失败,并出现以下错误:
valgrind:mmap修复(0x7fff5f40000,8388608)在UME中失败(加载_unixthread1),错误22(参数无效).
错误是否可以通过(最好)在windows上的
rhub::check\u或
devtools::check\u win\u devel
再现?如果代码是可复制的,您可以在仍然产生错误的情况下尽可能减少代码。最后,产生错误所需的就是一个简短的
.R
和一个简短的
.c
字段。否则,您可以将源代码上载到代码托管平台,如GitHub或GitLab,并在此处发布链接。@RalfStubner代码本身位于GitHub:(分支开发人员)这似乎不是问题所在。我再检查一遍。如果语句按顺序运行(我忽略了这一点),这是有意义的。我想知道我自己怎么做?如何在代码/包上运行
wch1/r-debug
和UBSAN?我对调试非常陌生,尤其是在C代码和内存泄漏等方面。@rivermout91查看该摘要图像的良好概述。仍然没有运气。它仍然卡在同一个点上。我试图理解如何使用docker图像,但它有点混乱。我下载了所有东西,但我不知道如何在我的代码/R包上运行UBSAN。我觉得我像是按照所有的方向走了,但是当我试图在我的
fastcmprsk_v1.0.3.tar.gz
上运行
RDsan
时,它说它找不到目录。我认为这与集装箱有关,但我不能完全确定。很高兴知道你采取了什么措施,这样我就能有更好的想法了。除非我误读了/误解了您发给我的教程。@91我现在已经包括了我使用的全部命令集。顺便说一句,在引用使用过的软件包时,应该使用
导入
,而不是
依赖