在我的软件包{bigstatsr}中,在Solaris上进行测试时,我收到有关CRAN检查的错误消息(请参见https://www.r-project.org/nosvn/R.check/r-patched-solaris-x86/bigstatsr-00check.html)。
我设法使用INSERT ... ON CONFLICT
重现了此问题。
默认情况下,由于umask设置为rhub::check_on_solaris()
,因此创建的文件具有权限644
。
然后,我尝试将umask更改为22
,它可以工作,并且我的文件权限为0
(请参阅https://builder.r-hub.io/status/bigstatsr_1.0.0.tar.gz-a15ab823b9e44e6ca790ee9a143ebadb#L5816)。
在666
上对该文件具有权限时,如何获得文件权限错误?
答案 0 :(得分:0)
一种可能性是您试图分配大量内存。尝试时,我在Fedora上遇到类似的错误,但在Windows上却没有(我没有尝试过Solaris)
int * my_array = (int*) std::calloc(x * y, sizeof(int))
和x * y * sizeof(int) + k
> = 2 32 ,其中k
表示特定于编译器的内存开销,用于存储my_array
的属性。
在Windows上,
if (!my_array) std::length_error("Object too large");
由于错误而正常失败;在Fedora上,我似乎在未触发此错误的情况下遇到了“无效权限” seg错误。