R(3.3.2,Windows 7)在for循环中使用dyn.load()
的大约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
的{{1}}包(在Rstudio中,在新目录中创建包,选择'使用Rcpp创建包'。)。使用testRcppRepeatDynLoad
构建程序包会在CTRL-SHIFT-B
文件夹中创建一个dll
文件,我们将使用src
加载该文件。
此代码在1050次迭代后崩溃了R会话:
dyn.load
while (i < 2000) {
i = i + 1
print(i)
dyn.load('src/testRcppRepeatDynLoad.dll')
dyn.unload('src/testRcppRepeatDynLoad.dll')
}
创建的dll
文件也会发生同样的事情。