2

dyn.load()R(3.3.2,Windows 7)在 for 循环中使用大约 1000 次迭代后崩溃。这在 Ubuntu 中不会发生。dll对于从Rcpp和代码创建的文件,可以观察到这种行为TMB,但我认为它与这些包中的任何一个都无关。崩溃消息是:

Problem Event Name: APPCRASH
Application Name:   rsession.exe
Application Version:    1.0.136.0
Application Timestamp:  583f5668
Fault Module Name:  testRcppRepeatDynLoad.dll

以下是我计算机上的一个最小可重现示例:

首先,创建一个Rcpp名为的包testRcppRepeatDynLoad(在 Rstudio 中,在新目录中创建包,选择“使用 Rcpp 创建包”。)。构建包时会在文件夹中CTRL-SHIFT-B创建一个dll文件src,我们将使用dyn.load.

此代码在 1050 次迭代后使 R 会话崩溃:

while (i < 2000) {
    i = i + 1
    print(i)
    dyn.load('src/testRcppRepeatDynLoad.dll')
    dyn.unload('src/testRcppRepeatDynLoad.dll')

}

同样的事情发生dll在由TMB::compile.

4

0 回答 0