Rails 有没有遇到 ruby 解释器崩溃的时候?

yakjuly · 2012年08月28日 · 最后由 will7v 回复于 2016年04月28日 · 8263 次阅读
2248 /Users/bladeyu/.rvm/gems/ruby-1.9.3-p194/gems/devise-2.0.4/lib/devise/param_filter.rb
 2249 /Users/bladeyu/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.2/lib/active_record/associations/preloader.rb
 2250 /Users/bladeyu/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.2/lib/active_record/associations/preloader/association.rb
 2251 /Users/bladeyu/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.2/lib/active_record/associations/preloader/singular_association.rb
 2252 /Users/bladeyu/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.2/lib/active_record/associations/preloader/belongs_to.rb
 2253 /Users/bladeyu/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin11.4.0/continuation.bundle

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

最近在 bundle exec guard 刷新 rspec 测试的时候,动不动就抛错, 把 1.9.3-p125 更新到了 1.9.3-p194 也不行。 有没有人也遇到过这种情况?

遇到过,不过不是很常见,也没有什么特别的办法,通常就是重启一下 Ruby 进程。 服务器上的 production 环境,通常都会用一个 monitor 工具去监察应用并重启,也没有遇到特别频繁崩溃的时候

我结合 pry 进行调试的时候会遇到 crash

@lgn21st production 环境也会发生这个么,恐怖。

#3 楼 @yakjuly 是你用到的某个库的问题。

@hooopo 我也是这么怀疑,但是不知道如何排查,它一刷就是几千行 把 console 都挤掉了。目前还没找到方法

#source 'http://rubygems.org'
source "http://ruby.taobao.org"
gem 'rails', '3.2.2'

gem 'mysql2', '0.3.11'

gem 'devise', '2.0.4'
gem "devise_invitable", "~> 1.0.1"

gem 'haml', '3.1.4'
gem 'haml-rails', '0.3.4'
gem 'will_paginate', '3.0.3'
gem "simple_form", '2.0.1'
gem 'best_in_place', '1.1.2'

gem 'jquery-rails', '2.0.1'
gem 'rails-i18n', '0.6.1'

gem 'state_machine'
gem 'tabs_on_rails', '2.1.1'
gem 'cancan'
gem 'nested_form', '0.2.0'
gem 'paper_trail', '2.6.3'
gem 'rails3_acts_as_paranoid', '0.2.2'
gem 'acts_as_commentable_with_threading', '1.1.2'
gem 'exception_notification'
gem 'thin'
gem 'ransack'
gem 'carrierwave', '~> 0.6.2'
gem 'fog'
gem 'mini_magick'
#gem 'flash_cookie_session'
gem "watu_table_builder", :require => "table_builder"
gem 'aws-ses', :require => 'aws/ses'
gem 'redis-rails', :require => "redis-rails"
gem 'resque', :require => "resque/server"
gem 'rest-client'
gem "pry-rails"
gem "devise_cas_authenticatable", :git => "[email protected]:devise_cas_authenticatable.git" #:path => "~/focus/devise_cas_authenticatable"

gem 'letter_opener',      "0.0.2", :group => [:development, :test]
group :assets do
  gem 'sass-rails', '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
  gem 'therubyracer'
  gem 'twitter-bootstrap-rails', '2.1.0'
  gem 'jquery-ui-rails'
  gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails'
  gem 'font-awesome-rails'
end

group :test do
  gem "cucumber-rails", :require => false
  gem "rspec-rails", '>= 2.8.0'
  gem "factory_girl", '3.4.0'
  gem 'shoulda-matchers', '1.0.0'
  gem 'spork',              "0.9.0"
  #gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
  gem "guard-rspec",        "0.6.0"
  gem 'guard-spork',        "0.5.2"
  gem 'guard-livereload',   "0.4.2"
  gem 'email_spec'
  gem 'resque_spec'
end

group :development do
  gem 'capistrano'
  gem 'capistrano-ext'
  gem 'rvm-capistrano'
  gem 'quiet_assets'
end

这些是我用的库。最近加的是 email_spec 和 resque_spec。嗯 怀疑是 email_spec 的问题。

@lgn21st @hooopo @yakjuly 排查思路:Ruby 解释器本身的 bug 可能性比较小,当然尽可能去使用稳定版本。 一般 crash 是使用了 C 扩展的 gem 包带来的问题(至少 80%),可以试试将近期加载的带 Native Extention 的去掉再试。@fsword pry 本身是 C 扩展,可能隐藏有问题。由于精力有限,以上属于思路,没有实际验证。大家可以尝试尝试。出现的错误可能会很有用,发出来看看也许可以帮忙看看:)

@lyfi2003 谢谢你的回复,可能是 C 扩展的问题。错误信息由于太长了 不方便 这里就不贴了,目前看来错误信息没有明显规律,基本上是把每一个加载过的 ruby 文件路径显示出来而已。

遇到过,大部分都是 Segmentation Fault,几乎都是跟 C 相关的。

今天也遇到这个坑了 ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.3.0]

最近经常碰到,我们是用 rails + grape 之后开始的,请问有遇到过这种问题的吗?后面是哪里问题怎么解决的大概能提供点线索吗?现在是变量没设置,就有 50% 可能崩溃。。。

50% 崩溃,不崩溃的时候报错信息是 求指点,现在升级 gem 和 ruby version 中,看什么效果

已解决,是 grape 的问题,不知道具体是什么问题,但是把逻辑移到 model 里,就可以正常异常捕捉了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号