自从在我 2012 年末的 mac mini 上更新到 Yosemite OSX 以来,我所有使用 foreach 和 doMC 进行并行计算的脚本都抛出了以下错误:
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
计算完成,但除了控制台中的错误输出之外,我还剩下 8 个打开的僵尸节点。当执行多个并行脚本时,这会导致系统被这些僵尸节点淹没,它们会在后台烧毁 CPU 和 RAM,从而迅速破坏整个进程:
由于问题与系统有关,我不确定是否可以提供一个在您的机器上也会失败的最小示例,但以下脚本会在我的机器上重现该错误。
install.packages(c('foreach', 'doMC', 'bigrf'))
library(bigrf)
data(Cars93, package="MASS")
x <- Cars93
y <- Cars93$Type
vars <- c(4:22)
forest <- bigrfc(x, y, ntree=30L, varselect=vars, cachepath=NULL)
有其他 Yosemite 用户遇到过这种情况吗?任何人都知道这里可能发生了什么?我绝对需要解决这个问题,并且宁愿不必通过清除我的硬盘驱动器并重新安装 OSX Mavericks 来解决这个问题。
干杯,
亚伦