Closed westpaddy closed 9 years ago
chdirはプロセス全体のワーキングディレクトリを変えてしまうので、他のスレッドがその影響を受けてしまうのが問題ですね。 一回中で死んでしまうと、ブロックを抜けてもワーキングディレクトリが元に戻らないので、それ以降のリクエストもおかしくなってしまうと……。
とりあえずの処置としては、chdirを使わないようにする、でしょうか……。 ただ他にもthread safeじゃない箇所がありそうで怖いですね。
しばらくは問題が起こってないようなので閉じます。 もし、問題が起きたら reopen してください。
いま具体的にはDir.chdirが問題なんですが、ほかにもあるかもしれません。
あるリクエストを処理しているスレッドの中でchdirして処理してる最中に、別のリクエストを処理するスレッドの中でchdirしたときに大体エラーはいて死にます。
ついでにワーキングディレクトリが変な感じになるので、その後のリクエストが正常に処理できていないように見えます。