【发布时间】:2011-12-23 13:52:40
【问题描述】:
据我随机看到的,我有相当大的代码块有时会中断,并显示错误消息:
此应用程序已请求运行时终止它 不寻常的方式。请联系应用程序的支持团队了解更多信息 信息。
一些研究表明,当调用 abort 时,这似乎是 Windows/C runtime 消息(例如,请参阅此 link)。这让我抓狂:因为这不是R 抛出的错误,所以我不知道去哪里找。有没有人知道R 或data.table(如果有可能一个包在C runtime [??] 中调用abort 函数)调用abort 函数的位置?
这里有一些进一步的信息:
- 问题与机器无关:我在两台不同的机器上尝试过,有时两台机器都会崩溃。
- 问题与 R 版本无关:我用
2.13.1、2.13.2和2.14.0尝试过。 - 两台机器都运行 Windows 7(64 位)。
- 问题似乎与我的
data.tables的大小有关。当我人为地减小较大的data.table的大小时,代码运行起来就像一个魅力。然而,有趣的是,一台机器的 RAM 比另一台机器大得多(16 GB 与 6 GB)。然而,这个额外的 RAM 并没有真正的帮助,至少看起来如此。 - 该问题不可重现,并且在我的代码中的不同部分中断。我注意到这一点是因为我的代码在 Sweave 文档中运行,所以我可以在 R 崩溃后打开 .tex 文件,并且它总是停在不同的位置。然而,它似乎总是在调用
data.table操作时(但这并不意味着很多,因为我的代码严重依赖data.table)。然而,即使我不调用 Sweave,而只是运行代码,它有时也会中断。所以它似乎与 Sweave 无关。 - 这与我使用的编辑器无关。我使用
RStudio,但通过在纯 R 命令窗口中运行代码来重现此行为。
这基本上是我想出的所有可能的解释。因此,如果有人对这个错误可能来自哪里或我还能检查什么有任何提示,那就太好了。
PS:接下来的几天我不会在我的机器上,所以如果我没有立即给出反馈,我希望你能原谅我。尽管如此,我还是想在圣诞节前发布这个问题,否则我无法享受我心爱的R 的痛苦,我坐在家里,不想治愈它......
更新
我进一步研究了这个问题,过了一会儿,我得到了一个相当小的例子,data.table 打破了我的 R 会话。如果此问题已解决并且它解决了此处描述的 R 崩溃(请注意,这是一个很大的问题,因为我在 data.table list 上发布的示例只是中断了我的 R 会话并且没有以我在此处描述的错误消息结束它),我会在这里写一个答案并接受它。
【问题讨论】:
-
一个可重现的例子在这里真的非常有帮助。不过,我明白在这种情况下可能会很困难。
-
我完全同意,但我只是不明白如何生成一个,因为代码在代码的不同部分中断,并且代码似乎没问题,因为它有时会运行。此外,错误消息让我假设我的例程中没有一行代码损坏,而是我面临的情况并没有很好地定义。这就是我希望专家能提供帮助的原因:
R或者可能是包调用abort什么时候?还是我完全错了,这是一个操作系统问题,只有在我运行 R 代码时才会发生,因为这是OS唯一一次达到极限? -
老实说,我不知道,但是通过一个可重现的示例,我们可以消除一些可能的原因。给包维护者发邮件可能是值得的,如果发送失败,请发送 R-devel 邮件列表。
-
data.table的版本是什么? -
@RYogi 我目前安装的版本是
1.7.7。但我也遇到过这个错误,旧版本的data.table也发生了。
标签: r data.table