Ruby崩溃并发出“非法指令”

时间:2013-05-21 18:55:07

标签: c ruby debian

在客户端的旧版Rails 2.1.1应用程序中,我遇到一个错误,其中ruby崩溃并发出“非法指令”。通过调用Digest :: SHA2上的方法触发崩溃。

>> Digest::SHA2
=> Digest::SHA2
>> Digest::SHA2.new()
Illegal instruction

Rails应用程序在负载均衡器后面的两台服务器上运行。两台服务器上的堆栈非常接近,只有一个触发崩溃。它们都是REE 1.8.7,Rails 2.1和Debian 6.一个运行Linux内核版本3.9.3,另一个运行版本3.9.2 - 但我不确定如何确定它是否相关。

Digest::SHA2似乎主要是在C中实现的。我知道很少有C并且诊断这个是我的头脑。任何正确方向的帮助/指针都将非常感谢!

非常感谢!

环境信息

以下是Digest::SHA2的REE来源: https://github.com/FooBarWidget/rubyenterpriseedition187-330/tree/master/ext/digest/sha2

在遇到崩溃的服务器上:

hostname@node1:~/appname$ cat /etc/issue
Debian GNU/Linux 6.0 \n \l

hostname@node1:~/appname$ uname -a
Linux node1.hostname.org 3.9.2-x86_64-[redacted] #1 SMP Tue May 14 17:16:34 EDT 2013 x86_64 GNU/Linux

hostname@node1:~/appname$ which ruby
/opt/ruby-enterprise-1.8.7-2012.02/bin/ruby

hostname@node1:~/appname$ irb
irb(main):001:0> require 'digest'
=> true
irb(main):002:0> Digest::SHA2.hexdigest('foo')
=> "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"
irb(main):003:0> exit

hostname@node1:~/appname$ ./script/console
Loading development environment (Rails 2.1.1)
>> Digest::SHA2.hexdigest('foo')
Illegal instruction

崩溃的服务器上:

hostname@node2:~/appname$ cat /etc/issue
Debian GNU/Linux 6.0 \n \l

hostname@node2:~/appname$ uname -a
Linux node2.hostname.org 3.9.3-x86_64-[redacted] #1 SMP Mon May 20 10:22:57 EDT 2013 x86_64 GNU/Linux

hostname@node2:~/appname$ which ruby
/opt/ruby-enterprise-1.8.7-2012.02/bin/ruby

hostname@node2:~/appname$ irb
irb(main):001:0> require 'digest'
=> true
irb(main):002:0> Digest::SHA2.hexdigest('foo')
=> "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"
irb(main):003:0> exit

hostname@node2:~/appname$ ./script/console
Loading development environment (Rails 2.1.1)
>> Digest::SHA2.hexdigest('foo')
=> "2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae"

0 个答案:

没有答案