SoftwareFoundationGroupAtKyotoU / automata

Other
3 stars 10 forks source link

システムがスレッドセーフでないせいで rack サーバで動作させた時の挙動が不安定 #270

Closed westpaddy closed 9 years ago

westpaddy commented 9 years ago

いま具体的にはDir.chdirが問題なんですが、ほかにもあるかもしれません。

あるリクエストを処理しているスレッドの中でchdirして処理してる最中に、別のリクエストを処理するスレッドの中でchdirしたときに大体エラーはいて死にます。

ついでにワーキングディレクトリが変な感じになるので、その後のリクエストが正常に処理できていないように見えます。

chiro commented 9 years ago

chdirはプロセス全体のワーキングディレクトリを変えてしまうので、他のスレッドがその影響を受けてしまうのが問題ですね。 一回中で死んでしまうと、ブロックを抜けてもワーキングディレクトリが元に戻らないので、それ以降のリクエストもおかしくなってしまうと……。

とりあえずの処置としては、chdirを使わないようにする、でしょうか……。 ただ他にもthread safeじゃない箇所がありそうで怖いですね。

chiro commented 9 years ago

しばらくは問題が起こってないようなので閉じます。 もし、問題が起きたら reopen してください。