[PHP-dev 136] Re: Please test APC CVS source

Yasuo Ohgaki php-dev@php.gr.jp
Mon, 03 Dec 2001 08:04:49 +0900


Rui Hirokawa wrote:

> 廣川です。
> 
> On Sun, 02 Dec 2001 11:41:30 +0900
> Yasuo Ohgaki <yohgaki@yahoo.co.jp> wrote:
> 
> 
>>大垣です。
>>
>>APC (Zend Cache/Accelaratorと同等のオープンソースのモジュール)の
>>CVS版をテストして頂けないでしょうか?
>>
>>CVS版のshmdirect modeは今までのshm modeに比べて非常に早い(2から3
>>倍)のですが、複雑なclassを持つscriptではsegfaultします。テストして
>>頂き、どのようなスクリプト(短く完全なスクリプト)をそえてバグレポー
>>トして頂けると助かります。
>>
> 
> ちょっと前からAPCとPHP Accerelatorを使ってテストをしています。
> APCのCVS版は最近使っていないので、時間がある時にテストしてみます。
> 
> 大垣さんが問題を発見されたスクリプトコードと
> configureの設定をこちらのMLでも流して頂けるとありがたいです。
> (試してみる人も現れやすいのではないかと思います。)

確かにその通りです:)
このメールを投稿した時点ではどのラインが問題を起こすのか判っていま
せんでしたが、最近見つけたので、以下の内容をAPCリストに投稿してい
ます。--enable-debugにして複数回リロードしないと、メモリリークを確
認できないと思います。他にも問題があるかも知れません。あれば、ぜひ
教えてください。

簡単にAPCのモードについて説明しておきます。
off : APC無し
shm : share memory mode (バイトコードをShare Memに保存)
shmdirect : shared memory direct mode (直接アクセスするためshmより
早い)
mmap : memory mapped I/O mode (バイトコードをファイルに保存)

APCとPHP Accerelatorの作者は夏くらいに知合いになったようです。
shmdirect modeはPHP Accerelatorで実装されていた物と同等と思います。

== Message to APC ML ===

It seems following simple scripts cause memory leak for "shm" and
"shmdirect" mode. Memory leak can happen with user defined
functions also.

PHP 4.1.0RC CVS/APC CVS/Apache 1.3.22/Linux 2.4.4.
"--enable-debug" is used for configure script.

If you cannot reproduce these leaks, I'll look into what module is
causing this.

******* shm mode *********

<?php
function foo()
{
     isset($unset_value);
}

foo();

?>


Apache Error log (shm mode)
apc_serialize.c(1931) :  Freeing 0x08199EC4 (84 bytes),
script=/home/yohgaki/public_html/ bugs/apc/bug4.php

****** shmdirect mode *********

<?php isset($unset_var); ?>

Apache Error Log

apc_iface.c(396) :  Freeing 0x0817AC9C (84 bytes),
script=/home/yohgaki/public_html/bugs/apc/bug5.php


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/