Rails Error: [BUG] Segmentation Fault

14 respostas
feliperod

Olá,

Estou com um problema quando tento atualizar um página seguidamente. O Ruby interpreter simplesmente para de funcionar.

O código que tenho é o seguinte:

def index render :text => "#{Time.now}" end
Estou rodando o Rails 2.2 no Windows Vista e a mensagem que aparece no console é a seguinte:

C:/langs/ruby/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1285: [BUG] Segmentation fault ruby 1.8.7 (2008-05-31 patchlevel 0) [i386-mswin32]
Alguma idéia do que pode ser?

Abração,

Felipe

14 Respostas

Mauricio_Linhares

Jesus!

Nunca vi isso.

Teoricamente o seu código não tem nenhum problema. Eu rodei a mesma coisa num linux aqui e não tive problema.

Mas, Ruby no Windows é extremamente complicado, o ideal é usar num ambiente *Nix da vida.

feliperod

Pois é… o problema é que nõa posso usar unix e também é a primeira vez que isso acontece comigo. Já uso Rails há algum tempo e nunca havia visto isso. Vou reisntalar tudo outroa vez, mas agora o rails 2.2.1 ou 2.1

Sei lá. Foi só eu atualizar que começou isso aí.

louds

Anexa um debugger e verifica onde tá crashando. Boa parte dos crashes no MRI são simples de corrigir.

Se você possuir um teste que reproduz isso facilmente é só rodar no gdb e quando rolar o segv começa pelo "t a a bt"
e vá adiante.

feliperod

Só acontece com a versão 2.2.2 do Rails. Eu também não consigo instalar via gem a versão 2.2.0 ou a 2.2.1.
Com a versão 2.1.1 funcionou legal.

Vou continuar investigando.

dlt

louds:

Se você possuir um teste que reproduz isso facilmente é só rodar no gdb e quando rolar o segv começa pelo "t a a bt"
e vá adiante.

“t a a bt” - Que isso?

louds

Comando do GDB ue, ele permite atalhos, então por que raios vou digitar:
“thread all apply backtrace”, quando “t a a bt” funciona?

Leozin

Dando uma de troll e revivendo o tópico ;p

Conseguiram resolver esse problema?

Instalei aqui tudo do 0 no meu PC novo e esse erro está rolando, to fazendo uma integração de Flex com Rails e na hora que eu carrego a página pela segunda vez (ou seja, a primeira requisição funciona) ele dá esse erro maldito =/

EDIT:
Fiz um gem update pra atualizar todos os gems e agora o erro mudou:

E:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/mysql_adapter.rb:196: [BUG] Segmentation fault

ruby 1.8.6 (2007-09-24) [i386-mswin32]

E outra coisa: antes, o erro acontecia depois do primeiro acesso a página (ou seja, no segundo). Agora é no terceiro, ou seja, se eu abro um "index" qualquer, aperto F5 ele vai, aperto F5 denovo ele vai, no terceiro dá esse erro aí e gg :(

EDIT 2:
Vamos botar mais lenha na fogueira?

Resolvi usar o Mongrel ao invés do Webrick e, adivinhem só?

O erro mudou!

E:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/core_ext/benchmark.rb:9: [BUG] Segmentation fault

ruby 1.8.6 (2007-09-24) [i386-mswin32]
Leozin

Pessoal, pelo visto o erro está fortemente ligado ao MySQL, pois resolvi mudar o ambiente para usar postgresql e está funcionando normalmente

Ou é a versão que estou rodando do MySQL (5.1.30, community) ou é o mysql que instalei do gem

Abraço

T

Tou achando que o JRuby vai acabar sendo mais adotado para evitar esses problemas nebulosos, já que tenta usar muito menos código nativo (apesar de usar muito JNA também). Obviamente a implementação do Ruby MRI é toda em código nativo, exceto se você for tentar usar o Rubinius (Ruby in Ruby).
Imagine você tomar um erro desses porque está usando uma determinada versão do driver do MySQL em vez de outra determinada versão do PostgreSQL :frowning:
É desanimador.

Leozin

Thingol, eu tentei usar com JRuby (a embedded version que vem com o netbeans) mas ele não deixava eu atualizar os gems para eu instalar o Rails.

Whatever, é desanimador mesmo essas coisas… O problema é que eu usava MySQL pra testes pessoais com Rails e Flex, mas até foi bom esse erro, eu gosto mais de psql mesmo hahaha :stuck_out_tongue:

prchakal

Olá,

Alguém conseguiu resolver este problema?

Estou tendo o mesmo problema e ainda não consegui resolver, e estou usando o mysql.

Eu tenho um site em rails: http://www.preventos.com.br/ e precisei fazer uma atualização hoje, então resolvi re-instalar o rails para fazer os testes locais antes.

Instalei o ruby, o rails, o mongrel, br-rails e paperclip, pronto, minha app só usa isso.

Ai iniciei o server, até aqui tudo bem.

Quando vou acessar: pããã! (http://localhost:3000)

NO CONSOLE APARECE:

d:/servidor/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/con
nection_adapters/mysql_adapter.rb:202: [BUG] Segmentation fault
ruby 1.8.6 (2008-08-11) [i386-mswin32]


This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

NA PÁGINA APARECE:

NoMethodError in HomeController#index

undefined method `each' for #

RAILS_ROOT: D:/www/preventos
Application Trace | Framework Trace | Full Trace

d:/servidor/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/mysql_adapter.rb:467:in `columns'
d:/servidor/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:1271:in `columns'
d:/servidor/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:3003:in `attributes_from_column_definition_without_lock'
d:/servidor/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/locking/optimistic.rb:66:in `attributes_from_column_definition'
d:/servidor/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:2430:in `initialize'
D:/www/preventos/app/models/usuarios_online.rb:7:in `new'
D:/www/preventos/app/models/usuarios_online.rb:7:in `validar_usuario_online'
D:/www/preventos/app/controllers/application_controller.rb:10:in `valida_usuario_online'

É a mesma aplicação que roda no meu servidor o.o

Ou seja, algum bug no activerecord ao usar o mysql.

Alguém sabe o que pode ser?

prchakal

Acabei de fazer um teste, pois migrei meu mysql local para 5.1 recentemente.

Apontei meu banco de desenvolvimento para o banco de produção.

E adivinhe só? O MESMO ERRO!!

:frowning:

A mesma aplicação usando o mesmo banco, então só pode ser algum BUG do ruby mesmo.

prchakal

Galera,

Consegui resolver o problema, bastou colocar a DLL do MySql lá na pasta BIN do ruby.

Para quem quiser, está ai:
http://www.prsolucoes.com/downloads/libmysql.zip

Deus abençõe a todos!

kirkgo

prchakal:
Galera,

Consegui resolver o problema, bastou colocar a DLL do MySql lá na pasta BIN do ruby.

Para quem quiser, está ai:
http://www.prsolucoes.com/downloads/libmysql.zip

Deus abençõe a todos!

Amigo, acabei de passar por esse problema agora há pouco. Faz 10 minutos.
Mas graças a você, o problema foi resolvido rapidamente. Valeu demais.

Abração e Deus te abençoe!

Criado 8 de dezembro de 2008
Ultima resposta 9 de dez. de 2009
Respostas 14
Participantes 8