2009-03-18 12 views
3

自分自身のハンドラ関数を実装するmod_perlプログラムがあります(Apache :: Registryを使用していない)。mod_perlで私のPerlモジュールを読み込むと、Apacheがハングするのはなぜですか?

私はParse :: RecDescentを使ってパーサーモジュールを書いています。

他の同様のmod_perlプログラムでパーサモジュールを問題なく使用しています。

私の新しいmod_perlプログラムのパーサーモジュールを単に "使用"するだけで、モジュール内の関数への参照がないため、Apacheサーバーは子プロセスを最大限に達するまで子プロセスを起動させます。 "use"ステートメントをコメントアウトすると、問題が解決されます(ただし、パーサを使わずに私を残すことは明らかです)。

私は、ライブラリが含まれていると、Apacheライフサイクルが終了する前にハングアップするようなことが起こっていると思われます。応答が送信され、ログが更新されてから、の後にこれが起こっていると考えられます。ログフェーズ

誰でも私の手掛かりがありますか?私は迷っている。

--phil--

答えて

1

私はあなたのための答えを(個人的に、私は...のFastCGIを使用)がありませんが、私はアプローチを提案することができます:添付などのstrace、ltraceの、GDBをしますapacheの子プロセスとそのぶら下がりを参照してください。 gdbから妥当な出力を得るには、apache、mod_perl、さらにはperlをデバッグシンボルで再構築する必要があるかもしれません。

1

私はこの問題を解決しましたが、それがなぜ機能するのか理解できません。それは私に少し不満を残しますが、私は問題がなくなったことに感謝しています。

私はderobertの提案を受けてプロセスを追跡する前に、ライブラリロードをmod_perlスタートアップファイルに移動して問題を解決することにしました。

SOの質問をするのに十分な問題を理解し、その点に着いたら、簡単なことが解決されるまでには、1日の作業が必要でした。

関連する問題