运行rspec时的Segfault

时间:2015-04-06 18:37:13

标签: ruby-on-rails ruby rspec segmentation-fault

运行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中运行规范两次而无需重现,而且它将返回到相同的段错误。它实际上会发生任何规范,但这是我目前正在研究的那个。

在预感中,我跑了brew link openssl,但这并没有帮助。确实让规范运行几次的解决方案是流行的“卸载和重新安装nokogiri”,gem pristine --all以及使用rvm完整重新编译ruby gemset。

以下是一些统计数据:

Rails 3.0.20 ruby 1.9.3p484 OSX Yosemite 10.10.2

感谢。

1 个答案:

答案 0 :(得分:0)

我无法给出完整的答案,但至少我可以让你走上正轨。在Ruby中很难弄清楚Segfaults(或者至少它们适合我)。

根据我的经验,他们通常是由几个冒犯的宝石造成的,但偶尔也会造成Ruby本身。我的第一个想法是查看编译原生扩展的任何宝石。如上所述,Nokogiri是一个受欢迎的罪犯。 ImageMagick和一些解析器也可能不好。您可以使用此页面查找嫌疑人:https://stackoverflow.com/a/24313346/203731

如果您没有很多C扩展宝石,请尝试安装不同的Ruby补丁级别。我在1.9.3p280上遇到了很多麻烦但是我的同事没有遇到麻烦。然后他们无法处理p484,而我笑了起来,抱怨我的光辉p484安装房间(这是一个缓慢的一天)。

无论如何,我猜这是针对你的本地开发环境的,所以使用过时的Ruby补丁级别可能不会对你造成太大的伤害。也许没有得到DEFCON没有打补丁。

如果这些都不起作用,可能是时候开始有选择地评论部分Gemfile,捆绑,然后运行rspec。它不漂亮,但它可能会奏效。

我希望这有帮助!