glibc が …httpd: double free or corruption を検出しました とはどういう意味ですか?

glibc が …httpd: double free or corruption を検出しました とはどういう意味ですか?

画像のアップロードを処理するために EC2 サーバーを実行しています。ローカル ディスクからサーバーへのアップロードを処理する Flash SWF があり、約 130 枚の画像 (合計約 650 MB) をアップロードしているときに、約 45 枚目の画像の後でサーバー ログ ファイルに次のエラーが発生しました。

  • glibc は /usr/sbin/httpd: 二重解放または破損を検出しました (!prev): 0x85a6b990 **

このエラーはどういう意味ですか?

サーバーが応答しなくなったので、再起動します。この問題の原因をどこから調べればよいでしょうか?

ありがとう

いくつかの情報 -

Apache/2.2.9 (Unix) DAV/2 PHP/5.2.6 mod_ssl/2.2.9 OpenSSL/0.9.8b 構成済み Fedora 8

答え1

httpdこのメッセージは、 、ロードされたモジュールの 1 つ、またはその実行環境 (ライブラリ、OS、ハードウェア) のいずれかにバグがあることを意味します。

このバグの技術的な説明は、httpdメモリがすでに他の用途に解放されていたにもかかわらず、プロセスの一部がメモリ ブロックへのポインタを保持していたというものです。この例では、メモリ ブロックがたまたま他の用途に再利用されていなかったため、エラーは検出され、害はありませんでした。ただし、このエラーが発生した場合、メモリ ブロックが再利用される他のケースでもこのエラーが発生する可能性が高く、その場合はエラーを検出できません。

理想的には、このバグを再現する方法を見つけて、Apache 開発チームにバグ レポートを送信します (バグが後続のバージョンで修正されたと思われる場合を除きますが、このようなバグの場合は、それを判断するのは難しいでしょう)。残念ながら、この種のバグは再現が困難です。Apache Web サイトで、開発チームがこのようなバグのレポートに関して希望を持っているかどうかを検索したり、Apache のメーリング リストで質問したりすることをお勧めします (どれが適切かはわかりません)。もちろん、エラーがサードパーティのモジュールまたはライブラリにある場合は、代わりにその開発チームに問い合わせてください。バグを再現できない限り、これを見つける奇跡的な方法はありません。

ハードウェアの問題を排除するために、メモリ テストを実行することをお勧めします。

関連情報