CRAN Solaris:捕获段错误 *** 地址导致“无效权限”

F. *_*ivé 8 r r-package

在我的包 {bigstatsr} 中,我在 Solaris 上测试时收到 CRAN 检查的这个错误(请参阅https://www.r-project.org/nosvn/R.check/r-patched-solaris-x86/bigstatsr-00check。 html)。

我设法使用rhub::check_on_solaris(). 默认情况下,创建的文件具有权限,644因为 umask 设置为22.

然后,我尝试将 umask 更改为0,这有效并且我获得了文件权限666(参见https://builder.r-hub.io/status/bigstatsr_1.0.0.tar.gz-a15ab823b9e44e6ca790ee9a143ebadb#L5816)。

如何同时有关于这个文件的权限,我可以得到这个错误与文件的权限666

ms6*_*609 1

一种可能性是您正在尝试分配大量内存。当我尝试时,我在 Fedora 上遇到类似的错误,但在 Windows 上没有(我没有尝试过 Solaris)

int * my_array = (int*) std::calloc(x * y, sizeof(int))
Run Code Online (Sandbox Code Playgroud)

x * y * sizeof(int) + k>= 2 32,其中k表示存储 的属性的编译器特定的内存开销my_array

在 Windows 上,

if (!my_array) std::length_error("Object too large");
Run Code Online (Sandbox Code Playgroud)

优雅地失败并出现错误;在 Fedora 上,我似乎遇到了“无效权限”seg 错误,但没有触发此错误。