2015-04-06 3 views
1

следующих ошибок при запуске RSpec:Segfault при запуске Rspec

rspec spec/mailers/lead_mailer_spec.rb 
/Users/ryanbales/.rvm/gems/ruby-1.9.3-p484/gems/honeybadger-1.16.1/lib/honeybadger/exception_extensions.rb:11: [BUG] Segmentation fault 
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin14.1.0] 
.............................. 
[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 

https://gist.github.com/ryankbales/b1732adee7fe503627d1

(полная ошибок и трассировка стеки в поставленной сути выше)

Я прошел через несколько решений, не найдя постоянного. В лучшем случае я могу запустить спецификацию в gist выше дважды без воспроизведения, и она вернется к тому же segfault. Это произойдет с любой спецификацией на самом деле, но на этом я сейчас работаю.

На догадках я побежал brew link openssl, однако это не помогло. Решения, которые действительно получили спецификацию, чтобы запустить пару раз, были популярными «удалить & переустановить nokogiri», gem pristine --all вместе с полной перекомпиляцией рубинового gemset, используя rvm.

Вот некоторые статистические данные:

Rails 3.0.20 ruby 1.9.3p484 OSX Yosemite 10.10.2

Спасибо.

ответ

0

Я не могу дать полный ответ, но, по крайней мере, я могу начать вас по пути. Segfaults чрезвычайно сложно понять в Ruby (или, по крайней мере, они для меня).

По моему опыту, они, как правило, вызваны парой оскорбительных камней, но изредка Рубин сам. Мое первое предположение заключалось в том, чтобы посмотреть на любой из камней, которые собирают собственные расширения. Нокогири, как вы отметили выше, является популярным преступником. ImageMagick, и некоторые из парсеров тоже могут быть плохими. Вы можете использовать эту страницу, чтобы найти подозреваемых: https://stackoverflow.com/a/24313346/203731

Если у вас нет большого количества драгоценных камней C, попробуйте установить другой уровень патча Ruby. У меня было много проблем с 1.9.3p280, но у моих коллег не было проблем с этим. Тогда они не могли справиться с p484, пока я рассмеялся и поглядел на комнату, демонстрируя мою славную установку p484 (это был медленный день).

В любом случае, я предполагаю, что это для вашей локальной среды разработчиков, поэтому использование устаревшего слоя Ruby, вероятно, не причинит вам слишком большого вреда. Может быть, не дошел до DEFCON, и он не был отправлен.

Если ни одна из них не работает, возможно, пришло время начать выборочно комментировать части вашего Gemfile, связать, а затем запустить rspec. Это некрасиво, но это, вероятно, сработает.

Надеюсь, это поможет!

Смежные вопросы