Ruby eventmachine错误:'no loop breaker'

时间:2010-09-30 11:22:09

标签: ruby macos eventmachine

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

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

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

我发现事件机器代码中唯一提到错误消息的地方:

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

(令我困惑的是它看起来像win32代码路径,或者我错了?)

对我而言,看起来像套接字这样的一些资源已经用完了。这可以解释出现的模式。

1 个答案:

答案 0 :(得分:2)

好的,我自己找到了。

错误实际上来自win32条件编译代码。如果我在本地构建,我会得到一个普通的“太多打开文件”错误,并且通过增加打开文件的ulimit值(在OSX上默认为非常适度)来轻松解决该问题。

ulimit -n 1024 # or whichever value you find appropriate

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

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

ruby​​gems.org gem的错误提示是:http://github.com/eventmachine/eventmachine/issues#issue/88