Tuesday, May 20, 2014

[メモ] Apache+mod_sslでSIGBUSが発生した件

@hirose31さんと、Apache HTTPDからHTTPSでファイルダウンロード中にサーバプロセスがSIGBUSで死ぬって件にぶちあたり、

「OpenSSLの中でmemcpyがSIGBUSしてます」「な、なんだってー!」

って調べたのですが、理由は以下のとおりだった。

  • HTTPSの場合、デフォルト設定だとファイル読込にmmap(2)が使われる
    • mmapされたファイルのサイズが変更されてもApacheはそれを検知しようがない
    • そして、ファイル末尾以降のデータを読もうとするとセグメンテーションエラー(SIGBUS)が発生し、Apacheのサーバプロセスは異常終了する
  • HTTPの場合は、ローカルファイルシステムの場合sendfile(2)が使われるので、ファイルサイズが変更になってもApacheは異常終了しない
    • ただし、mod_deflateのような出力フィルタを使っている場合は、HTTPS同様に異常終了する可能性がある注1

この動作はApacheの「仕様」のようです注1日本語版だとNFS特有の現象のように読めるけど、英語版は以下のように書かれています。
Deleting or truncating a file while httpd has it memory-mapped can cause httpd to crash with a segmentation fault.
EnableMMAP Directive - core - Apache HTTP Server
言われてみれば当然だけど、mmapやsendfile等を自動的に使い分けているサーバの場合、これが原因だとは気づきにくいですよね。

というわけで、Apacheを使う場合はEnableMMAP Offにしておきましょう注1、さもないとアラートが上がってきたりしてウザいですよという話でした。本当は配信ファイルを全てアトミックに更新できばいいのですが、運用的にできないこともありますからね。

Apache以外のサーバでも同様の問題があるかどうかは知りません。

注1: HTTPSに限らない問題なので加筆修正 (17:06)。参照: Bug 46688 – Child segfault when mmaped file truncated

3 comments:

  1. Here is the hublot replica additional attack at the Replica Watch Address this time it is March, 2016. This a ability advised for humans who wish to accomplish abiding they are acquainted of all the evolving developments with replica watches so that they can be able to rolex replica atom the absolute affair from the fake. Admittedly, February did not acquire a lot traveling on as far as replica watch updates. The New Year, which eats up two accomplished weeks of the month, is abundantly to accusation for this back is area a lot of replica watches are made. Everyone stops accomplishing annihilation and just celebrates. Without any new watches hitting the swiss replica watches bazaar therefore, this address will focus on recapping contempo developments and discussing accepted models. As has been consistently accurate for some time, Panerai is still the replica rolex watches hottest high-end replica watch brand. Panerai replicas just get bigger and bigger unfortunately, acceptation that the cunning Asians are accepting appealing acceptable with their technology. You can usually still alarm out a affected Panerai if you yield a abutting attending at the acme and acme guards with are imprecise, and if you can administer to breitling replica actuate the punch blush you will see it is appealing weak. The atomic accessible blemish is the abbreviate cannon pinion, but do not bother searching for that one.

    ReplyDelete