Pergunta

Recebo um erro levemente elevado da EventMachine (0,12.10, no OSX 10.6.4):

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

Isso ocorre apenas nos testes e somente quando todos os testes são executados juntos. Corra individualmente, eles passam.

Vi o único lugar no código EventMachine que menciona a mensagem do erro:

http://github.com/eventmachine/eventmachine/blob/master/ext/em.cppp#l333

(O que me intriga também é que parece um caminho de código Win32, ou estou errado?)

Para mim, parece que um pouco de soquetes é usado. Isso explicaria o padrão de ocorrência.

Foi útil?

Solução

Ok, eu mesmo encontrei.

O erro vem de fato do código compilado condicionalmente Win32. Eu recebo um erro antigo de "muitos arquivos abertos", se eu construir localmente, e esse problema é fácil de relembrar, aumentando o valor ulimit para arquivos abertos (que se diz ser bastante modesto por padrão no OSX).

ulimit -n 1024 # or whichever value you find appropriate

(O padrão é 255, observe a saída de ulimit -a)

Se eu construir e instalar a partir do repositório Git clonado usando rake gem:install, Recebo a mensagem de erro esperada (UNIX). Portanto, o bug parece ser corrigido no mestre.

Bug arquivado para o rubygems.org gem está aqui: http://github.com/eventmachine/eventmachine/issues#issue/88

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top