2012-12-03 1 views
10

は私のRoRのアプリの開発マシン(ローカルサーバ、OSX 10.8.1、Rubyの1.9.3、Railsの3.2.8)では奇数何かが(もちろん...)空中から現れ始め:サーバが動作している間にファイルを変更することによってSystemStackErrorがトリガされましたか?

Railsのサーバーが崩壊限り

SystemStackError (stack level too deep): 
    actionpack (3.2.8) lib/action_dispatch/middleware/reloader.rb:70 


    Rendered /Users/dekay/.rvm/gems/[email protected]/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.9ms) 
    Rendered /Users/dekay/.rvm/gems/[email protected]/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.2ms) 
    Rendered /Users/dekay/.rvm/gems/[email protected]/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (14.7ms) 

私はGoogleで検索してSystemStackErrorが原因無限ループに通常であることを発見したが、次のログエントリに(すべてのルートは、サーバーの再起動は、それが再び作業を取得する唯一の方法である、殺されています)私はそれをトレースすることができます私は自分のコードでそのようなループはありません。そして、エラーはアプリケーションロジックの特定のステップにあるようには見えません。

次のようにあるサーバーのクラッシュと私の行動との間に相関のみ:アプリで

  1. 変更いくつかのコード
  2. アプリ
  3. ブーム、サーバーなくなって、エラーメッセージの現在のWebページを再読み込み。
  4. ませページは、この後に動作しない、エラーは次のとおりです。

    ルーティングエラー

    Noルートマッチ "/"

    が利用可能なルートの詳細については、すくいルートを実行してみてください[GET]。

これをデバッグするには、誰かが正しい方向に向いていますか? PS:不注意な「バンドルアップデート」の後に起こったと思われます。これはできますか?

+0

どのような宝石を使用していますか?あなたはActiveSupport/ActiveDispatch/etcの何かをmonkeypatchingしていますか?また、どのようなRubyのパッチ・バージョンを使用していますか? – Novae

+0

これはRails 3.2.11とruby 1.9.3-p385で見ています。 Gemenv:https://gist.github.com/coneybeare/4957822 Gemfile.lock:https://gist.github.com/coneybeare/4957828 – coneybeare

答えて

2

stack level too deepのエラーメッセージをrails appにデバッグするのは簡単ではありません。さまざまな理由によりエラーが発生する可能性があり、エラーメッセージはそれほど役に立ちません。

stack level too deep errorにつながる理由のいくつか:

  1. 矛盾アプリケーションのgems & plugins and any other dependenciesインチ
  2. Code syntax error
  3. applying db migrations erroneouslyによって引き起こされる不一致。

エラーは、システムのブートアップ時に起こっていた場合、このチップは非常に有用であろう:http://www.datatravels.com/technotes/2012/07/11/awesome-debugging-for-rails-boot-stacklevel-too-de/

説明から、それはアプリがしばらくの間、正常に動作ように見え、その後、クラッシュを開始 - そう上記のブートアップのケースは当てはまらないかもしれません。問題を考え出すについて移動する

一つの方法は、それは、変更をロールバックし、状態を作業に戻ってシステムを得る価値があるかもしれませんprintf debugging

また使用して、エラーを引き起こしている特定のline/block of codeを隔離するだろうし、変更を徐々に戻して根本的な原因を特定します。

この場合、bundle updateがエラーを引き起こした可能性があります。新しく追加された依存関係をチェックして、それが原因である可能性があるかどうかを確認することをお勧めします。

+0

この回答をいただきありがとうございます。本当に奇妙なことは、ファイルをローカルに変更したときにサーバがそれを取得せずクラッシュするように見えることです。私が英雄に配備するとき、これはまったく起こりません。 – danieldekay

+1

Heroku deployは強制的にサーバーの再起動を行います。おそらくあまりにも驚くべきことではありませんが、エラーはそこで発生しません。再起動後もローカルアプリケーションは正常に動作しますか?それとも、しばらくすると同じエラーで失敗に戻りますか? –

+0

「実行中のシステムの下で」ファイルを変更しないと、ローカルアプリケーションが正常に動作します。アプリの実行中にファイルを変更するのは安全でしたが、新しいものになるためにはWebページをリロードするだけでした。 – danieldekay

関連する問題