[PHP-users 14198] Re: ob_startでapache が落ちる?

Yasuo Ohgaki php-users@php.gr.jp
Mon, 24 Mar 2003 13:23:49 +0900


大垣です。

9割以上の確立でPHPスクリプトで書かれた、callback関数のバグと思います。

TAKATA Toshinori wrote:
> 高田と申します。
> Solaris上でPHP4.3.1とApache1.3.27を使っています。
> 
> ob_start("callback");
> include("xxxx.php");
> ob_end_flush();
> 
> のようにして、callback 関数内で include されたファイルの内容を変更し出力
> するようにしていますが、以下のようなエラーを吐いてapacheが落ちてしまう現
> 象が多発してしまいます。
> 
> FATAL:  emalloc():  Unable to allocate 660642520 bytes
> FATAL:  emalloc():  Unable to allocate 1780482484 bytes
> FATAL:  emalloc():  Unable to allocate 1277232548 bytes
> [Mon Mar 17 17:33:49 2003] [notice] child pid 6643 exit signal Bus Error (10)
> [Mon Mar 17 17:36:32 2003] [notice] child pid 6499 exit signal Segmentation Fault (11)
> 
> メモリが取得できないようなのですが、何回かリロードするときちんと表示され
> ます。
> 
> このプログラムは以前使っていた物を 出力バッファリングを使って書き直した
> ものなのでこれが原因なのではないかと思っています。
> 
> どなたかこのような現象をご存知の方はいらっしゃいませんでしょうか?
> 

例えばcallbackを再帰的に呼び出すと、どのプラットフォームでも簡単に
再現すると思います。
# callback関数のコードがないとなんとも言えませんが...

--
Yasuo Ohgaki