Ошибка Ruby Eventmachine: «нет прерывателя цикла» - PullRequest
0 голосов
/ 30 сентября 2010

Я получаю незначительную ошибку от Eventmachine (0.12.10, в OSX 10.6.4):

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 Ответ

2 голосов
/ 30 сентября 2010

Хорошо, я нашел это сам.

Ошибка на самом деле происходит из условно скомпилированного кода win32.Я получаю старую ошибку «Слишком много открытых файлов», если я строю локально, и эту проблему легко устранить, увеличив значение ulimit для открытых файлов (которое по умолчанию считается довольно скромным в OSX).

ulimit -n 1024 # or whichever value you find appropriate

(по умолчанию 255, посмотрите на вывод ulimit -a)

Если я собираю и устанавливаю из клонированного репозитория git с использованием rake gem:install, я получаю ожидаемое (Unix) сообщение об ошибке.Так что, похоже, ошибка исправлена ​​в master.

Поданная ошибка для гема rubygems.org находится здесь: http://github.com/eventmachine/eventmachine/issues#issue/88

...