2012-01-12 12 views
0

私は最近、新しいアプリケーションサーバーを設定する(Rubyはnginxの1.0.6、REE、Railsの2.3.8、旅客3.0.9を1.8.7)プロキシの背後にあるといくつかの奇妙な行動に遭遇しています。このアプリケーションサーバーだけに投稿/ログインすると、502 Bad Gatewayエラーが発生します。これは他のアプリサーバーでは起こりません。両方とも同じように設定されています。問題を特定のコード行(Authlogicセッションの保存)に絞り込んだ。私はこれらの行(特にコールを保存)コメントアウトする場合:Authlogic、Railsのコンソールで不当命令

@user_session = UserSession.new(params[:user_session]) 
if @user_session.save 
... 

を502エラーが発生しなくなりました。私はコンソールでこれらのコマンドをテストするとき同様に、私は不当命令応答とコンソールがクラッシュを取得:他のアプリケーション・サーバー上の

>> Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self) 
>> @user_session = UserSession.new({"password"=>"password", "remember_me"=>"0", "login"=>"myuser"}) 
>> @user_session.save 
Illegal instruction 

テストこれはうまく動作します(コンソールは不当命令結果でクラッシュしません)。

このトラブルシューティングを開始するために、任意のアイデア?私は、RailsログまたはNginxログのいずれの価値も何も見ません。

ありがとうございました。

編集

不当命令はdigest.rbするシステムコールの間に発生しています。

stat("/opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/1.8/digest.rb", {st_mode=S_IFREG|0644, st_size=1145, ...}) = 0 
open("/opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/1.8/digest.rb", O_RDONLY) = 15 
fstat(15, {st_mode=S_IFREG|0644, st_size=1145, ...}) = 0 
close(15)        = 0 
--- SIGILL (Illegal instruction) @ 0 (0) --- 
+0

FYI、私はそれは問題ではありませんので、問題のアプリケーション・サーバー上のAuthlogicの宝石は、作業アプリケーションサーバ上のものと同一であること(差分を使用して)確認しました。 – modulaaron

+0

IRBで 'digest''が必要な場合はどうなりますか? –

+0

'require 'digest''はIRBで正常に動作します。 – modulaaron

答えて

1

これが聞こえることがRuby 1.9 Ramaze App Failing with “Illegal instruction”に関連しているように:同じことは、私はUbuntuのルビーEnterprise Editionのパッケージを使用するかどうか、私はそれを自分でコンパイルするかどうか発生します。

Jörg W Mittagは言った:

「不正な命令」は、通常、あなたがその特定のCPUに実装されていない命令が含まれて実行しようとしたバイナリコードのいくつかの部分を意味するCPUからのエラーメッセージです。

  • バイナリが間違ったCPUの最適化設定でコンパイルされました:

    これは複数の理由を持つことができます。 CPUベンダーは常に新しい命令を追加します。コンパイラーがあなたのCPUよりも新しいCPUを最適化すると、CPUが理解できない命令が発行された可能性があります。

  • コンパイラが壊れています。
  • バイナリが破損しています。
  • あなたがコンパイルされたコードは、アセンブリコードまたはあなたのCPUが持っていない命令を含む組み込み関数が含まれています。

元の質問の提出者Phil Kulakは、彼がエラーを引き起こし、スタックオーバーフローを発見したと答えました。

+0

返事をありがとう。私は元の投稿を編集して、digest.rbへのシステムコール中にクラッシュが発生していることを反映しました。 – modulaaron

+0

「違法命令」の問題は、ホスティング会社のVPSビルドに関連していました。彼らは問題を解決するまで私は純粋な専用のマシンに移動し、私が行ったときに問題はなくなった。 – modulaaron