为什么在for循环中调用dyn.load会导致我的R会话崩溃?

时间:2017-11-28 10:10:39

标签: r dll rcpp tmb

R(3.3.2,Windows 7)在for循环中使用dyn.load()的大约1000次迭代后崩溃。这在Ubuntu中不会发生。对于从dllRcpp代码创建的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文件也会发生同样的事情。

0 个答案:

没有答案