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

Youichi Iwakiri php-dev@php.gr.jp
Wed, 05 Dec 2001 20:57:57 +0900


いわきりです

Rui Hirokawa wrote in <20011205002246.0291ba97.rui_hirokawa@ybb.ne.jp>:
 >廣川です。
 >APCのCVS版
 >PHP-4.1.0RC4 --enable-debug (Apache DSO)
 >Apache-1.3.22
 >Linux-2.2.18
 >の環境でテストしたところ、

私も同じくテストしてみました。
環境は
 PHP-4.0.6 --enable-debug (Apache DSO)
 Apache-1.3.20
 FreeBSD 3.4-RELEASE
 apc-cvs.tar.gz  timestamp 2001/12/03 8:19:28 size 237,568 byte
実行環境は
 apc.mode=shm
 apc.shm_segment_size=2097152
としています。
#メモリ少ないので
#defaultだと32Mbytes × 10 setみたいですね

 ><?php
 >function foo()
 >{
 >      isset($unset_value);
 >}
 >
 >のコードで以下のメモリリークを検出しました。
 >大垣さんのものと同じです。
 >
 >apc_serialize.c(1931) :  Freeing 0x0811B164 (84 bytes), 
 >script=/home/rui/public_
 >html/php/cache/cache_test1.php

メモリリークに関してはほぼ一緒です。
84 bytesが92 bytesにこちらの環境ではなります。

 >その後、何回かくり返しアクセスするとApacheのプロセスが落ちるようになりました

こっちは、確認できませんでした。
大垣さんのスクリプトを試した限りでは
1回目のリクエストのみleakの情報が出力され以降のリクエストでは
出力されません。
また、ApacheBenchで10万回の連続requestを実施しましたが
プロセスは落ちませんでした。

他の自作のページを適当に見ているときに落ちました。
その時のBackTraceはとりました。

色々と余計なものがloadingされてますが以下の場所で
落ちているようです。

他に取れる情報があればとりますけどどの辺りの
情報が必要ですか?

以下、gdb コンソールログ

GNU DDD 3.3.1 (i386-unknown-freebsd3.4), by Dorothea Lkehaus and Andreas Zeller.
Copyright 1995-1999 Technische Universit Braunschweig, Germany.
Copyright 1999-2001 Universit Passau, Germany.
(no debugging symbols found)...
/root/451: No such file or directory.
Attaching to program: /usr/local/apache/bin/httpd, process 451
Reading symbols from /usr/lib/libcrypt.so.2...
(no debugging symbols found)...done.
Reading symbols from /usr/lib/libc.so.3...(no debugging symbols found)...done.
Reading symbols from /usr/local/lib/php/extensions/debug-non-zts-20001222/php_apc.so...done.
Reading symbols from /usr/local/apache/libexec/mod_env.so...done.
Reading symbols from /usr/local/apache/libexec/mod_log_config.so...done.
Reading symbols from /usr/local/apache/libexec/mod_mime.so...done.
Reading symbols from /usr/local/apache/libexec/mod_negotiation.so...done.
Reading symbols from /usr/local/apache/libexec/mod_status.so...done.
Reading symbols from /usr/local/apache/libexec/mod_include.so...done.
Reading symbols from /usr/local/apache/libexec/mod_autoindex.so...done.
Reading symbols from /usr/local/apache/libexec/mod_dir.so...done.
Reading symbols from /usr/local/apache/libexec/mod_asis.so...done.
Reading symbols from /usr/local/apache/libexec/mod_imap.so...done.
Reading symbols from /usr/local/apache/libexec/mod_actions.so...done.
Reading symbols from /usr/local/apache/libexec/mod_userdir.so...done.
Reading symbols from /usr/local/apache/libexec/mod_alias.so...done.
Reading symbols from /usr/local/apache/libexec/mod_access.so...done.
Reading symbols from /usr/local/apache/libexec/mod_auth.so...done.
Reading symbols from /usr/local/apache/libexec/mod_setenvif.so...done.
Reading symbols from /usr/local/lib/libintl.so...done.
Reading symbols from /usr/local/lib/libnmz.so...done.
Reading symbols from /usr/lib/libm.so.2...done.
Reading symbols from /usr/local/lib/libpng.so...done.
Reading symbols from /usr/lib/libz.so.2...done.
Reading symbols from /usr/local/pgsql/lib/libpq.so...done.
Reading symbols from /usr/local/apache/libexec/libphp4.so...done.
Reading symbols from /usr/lib/libpam.so.1...done.
Reading symbols from /usr/local/apache/libexec/mod_cgi.so...done.
Reading symbols from /usr/local/apache/libexec/mod_gzip.so...done.
Reading symbols from /usr/local/lib/php/extensions/debug-non-zts-20001222/pgsql.so...done.
Reading symbols from /usr/local/lib/php/extensions/debug-non-zts-20001222/mbstring.so...done.
Reading symbols from /usr/local/lib/php/extensions/debug-non-zts-20001222/namazu.so...done.
Reading symbols from /usr/local/lib/php/extensions/debug-non-zts-20001222/gd.so...done.
Reading symbols from /usr/local/lib/libgd.so.2...done.
Reading symbols from /usr/local/lib/libt1.so.4...done.
Reading symbols from /usr/local/lib/libfreetype.so.7...done.
Reading symbols from /usr/X11R6/lib/libX11.so.6...done.
Reading symbols from /usr/X11R6/lib/libXpm.so.4...done.
Reading symbols from /usr/local/lib/libjpeg.so.9...done.
Reading symbols from /usr/libexec/ld-elf.so.1...done.
0x180edbc8 in accept () from /usr/lib/libc.so.3
(gdb) c

Program received signal SIGSEGV, Segmentation fault.
0x1821e10f in call_overloaded_function (T=0xa8a5b768, arg_count=0, return_value=0x811ae64) at ./zend_execute.c:855
  /home/install/php/php-4.0.6/Zend/zend_execute.c:855:25047:beg:0x1821e10f
(gdb) bt
#0  0x1821e10f in call_overloaded_function (T=0xa8a5b768, arg_count=0, return_value=0x811ae64) at ./zend_execute.c:855
#1  0x18221f08 in execute (op_array=0x80b8624) at ./zend_execute.c:1566
#2  0x18350ac0 in apc_execute (op_array=0x80b8624) at apc_iface.c:493
#3  0x18233250 in zend_execute_scripts (type=8, file_count=3) at zend.c:752
#4  0x1824b633 in php_execute_script (primary_file=0xbfbfd6bc) at main.c:1206
#5  0x18246b7e in apache_php_module_main (r=0x80b206c, display_source_mode=0) at sapi_apache.c:89
#6  0x182478f8 in send_php (r=0x80b206c, display_source_mode=0, filename=0x80b24fc "/home/iwakiri/public_html/test/show_mail.php") at mod_php4.c:536
#7  0x1824793b in send_parsed_php (r=0x80b206c) at mod_php4.c:547
#8  0x8053ff9 in ap_invoke_handler ()
#9  0x806884f in ap_some_auth_required ()
#10 0x8068ca6 in ap_internal_redirect ()
#11 0x1833d796 in mod_gzip_redir1_handler () from /usr/local/apache/libexec/mod_gzip.so
#12 0x1833be30 in mod_gzip_handler () from /usr/local/apache/libexec/mod_gzip.so
#13 0x8053ff9 in ap_invoke_handler ()
#14 0x806884f in ap_some_auth_required ()
#15 0x80688b6 in ap_process_request ()
#16 0x805f776 in ap_child_terminate ()
#17 0x805f9f8 in ap_child_terminate ()
#18 0x805faac in ap_child_terminate ()
#19 0x80600cc in ap_child_terminate ()
#20 0x80608fc in main ()
#21 0x804ea4d in _start ()