pid=xxxxx file=ext/apache2/Hooks.cpp:645

JSで処理待ちを表示する処理で、処理完了を待たずにJSの表示が消える現象が発生。
ApacheのErrorログには下記メッセージが記録されていました。

[ pid=xxxxx file=ext/apache2/Hooks.cpp:645 time=2009-09-10 20:25:43.542 ]:
  The backend application (process xxxxx) did not send a valid HTTP response; instead, it sent n
othing at all. It is possible that it has crashed; please check whether there are crashing bugs
in this application.

原因はpassengerのbugでした。
現時点で最新版の2.2.5でfixされてます。
http://blog.phusion.nl/2009/09/01/phusion-passenger-2-2-5-released/

[Apache] Fixed I/O timeouts for communication with backend processes
    Got rid of the code for enforcing I/O timeouts when reading from or writing to a backend process. This caused more problems than it solved.


さっそくpassengerをupdate。
update方法は公式を見ても見当たりませんでしたが(探せてないだけ?)、下記方法でアップデートできました。

# gem install passenger
# passenger-install-apache2-module

apacheのconfファイルを変更。
※下記部分を既存のものと置き換える
※パスは環境によって異なります
   LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/ext/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5
   PassengerRuby /usr/bin/ruby

インストールと同じ手順ですね。

環境絡みのバグはいつも解決に時間がかかります。