由Rails / Nokogiri引起的随机分段错误(不完整响应)

时间:2016-03-21 14:02:15

标签: ruby ruby-on-rails-4 segmentation-fault nokogiri

我最近将Rails 3中的Rails应用程序更新为Rails 4,并将Ruby从1.9更新到2.3。 (我后来尝试了2.2和2.1,结果相同)。

我使用Passenger和NGINX。应用程序在大多数情况下运行正常,但是,每10个左右请求一次,将此消息随机返回到浏览器:

Incomplete response received from application

NGINX日志显示如下:

[Client 2-623] Sending 502 response: application did not send a complete response
28741/7f94e2312700 age/Cor/CoreMain.cpp:819 ]: Checking whether to disconnect long-running connections for process 2521, application /home/admin/apps/<myapp>/current/public
App 2059 stderr: request_handler/thread_handler.rb:226 ]: *** Passenger RequestHandler warning: someone tried to connect with an invalid connect password.
stderr: /home/admin/apps/<myapp>/shared/bundle/ruby/2.2.0/gems/builder-3.2.2/lib/builder/xchar.rb:146:
stderr: [BUG]
stderr: Segmentation fault at 0x00000000000000

经过一些调试后,我发现问题似乎是我视图中的strip_tags调用,删除它会阻止此问题。我认为分段错误与Nokogiri有关,因为Rails清理是由Rails 4中的Nokogiri完成的。

这个问题很难调试,因为helper.strip_tags似乎在控制台中工作正常,但它在视图中引起了这些问题。

我尝试了以下方法来解决问题但没有成功:

  • 确保已安装libxml2和所有相关的Nokogiri库并且是最新的
  • 使用和不使用--use-system-libraries构建Nokogiri,无论是否指定特定的库位置,任何配置都存在同样的问题。
  • 使用Nokogiri 1.6.0和1.6.7构建。虽然在使用1.6.7时似乎出现了额外的Rails邮件程序段错误,但两者都不起作用。
  • 使用RVM构建于Ruby 2.1,2.2,2.3之上。所有人都有同样的问题。
  • 使用secret_key_base密钥正确设置Rails 4 secrets.yml。

如果包含strip_tags,我也会随机获得以下Rails应用程序错误。有时页面加载正常,有时会触发这些错误:

RuntimeError: rehash occurred during iteration
<my controller>#index
[GEM_ROOT]/gems/nokogiri-1.6.0/lib/nokogiri/xml/document.rb, line 210

NoMethodError: undefined method `empty?' for false:FalseClass
<my controller>#index
[GEM_ROOT]/gems/haml-4.0.7/lib/haml/compiler.rb, line 193

0 个答案:

没有答案