0

我从 eventmachine(0.12.10,在 OSX 10.6.4 上)得到一个轻微的 heisen 错误:

terminate called after throwing an instance of 'std::runtime_error'
  what():  no loop breaker

它仅发生在测试中,并且仅在所有测试一起运行时发生。他们通过单独运行。

我发现 eventmachine 代码中唯一提到错误消息的地方:

http://github.com/eventmachine/eventmachine/blob/master/ext/em.cpp#L333

(让我感到困惑的是,它看起来像一个 win32 代码路径,还是我错了?)

对我来说,看起来像套接字这样的资源已经用完了。这将解释发生模式。

4

1 回答 1

2

好的,我自己找到了。

该错误实际上来自win32条件编译代码。如果我在本地构建,我会得到一个普通的“打开的文件太多”错误,并且通过增加打开文件的 ulimit 值很容易解决这个问题(据说在 OSX 上默认情况下是相当适中的)。

ulimit -n 1024 # or whichever value you find appropriate

(默认为 255,查看输出ulimit -a

如果我使用从克隆的 git 存储库构建和安装rake gem:install,我会收到预期的 (Unix) 错误消息。因此,该错误似乎已在 master 中修复。

rubygems.org gem 的归档错误在这里:http: //github.com/eventmachine/eventmachine/issues#issue/88

于 2010-09-30T14:11:28.240 回答