Did you try cutting down the script that crashes (as opposed to trying to
create a script that reproduces the problem from scratch)? That's the
easiest way to create a short test case...
Zeev
At 10:03 05-09-01, Yasuo Ohgaki wrote:
>Zeev Suraski wrote:
>
>>Do you use dl() anywhere? Is the crash reproducible?
>
>
>Hi Zeev,
>
>I'm glad you are interested in. I don't use dl(). This crash is
>reproducible, but I could not make it reproduce with simpler script, yet.
>
>Anyway, there is other code that crashes PHP which I can report details.
>
>I have Form classes handle HTML form. In the classes, there is a following
>method
>
>// Form_Email class
> function _validate($val) {
> error_log("called _validate()\n",3,'/tmp/php_elog');
> if (!$this->required && !$val) {
> return '';
> }
> if (!eregi($this->valid_regex, $val, $regs)) {
> return "ERROR"; //$this->valid_e;
> }
> error_log("regex check done\n",3,'/tmp/php_elog');
> $host = $regs[1];
> $err = '';
> switch ($this->check_lev) {
> case "hard":
> case "normal":
> if (!checkdnsrr($host,'MX')) {
> $err = "No MX entry in DNS";
> }
> break;
> }
> error_log("return _validate()\n",3,'/tmp/php_elog');
> return $err;
> }
>
>There is other class called From which has "HAS A" relationship to
>Form_Email class. From object has colletion of form element objects as
>array. In the Form class, appropriate elements are selected and _validate
>method is called as variable function(method). (i.e. $object->$method())
>
>Once this method is called, PHP calls this method over and over until PHP
>reaches memory limit. I don't get SIGSEGV for this one.
>
>Interesting behavior is, this problem cannot be reproduced with much
>simpler Form class test script. It happens when I use these Form classes
>within an Application class. (Form object is defined as global) However,
>if I comment out checkdnsrr() call, it works as expetecd.
>
>NOTE: I experienced similar behavior when I encountered foreach() bug. PHP
>stopped looping when I comment out or move some statements, even if real
>problem was in foreach() code.
>
>I'll try to find the cause this afternoon. However, I think I won't find
>what's wrong... I needed to spend MANY hours to find out foreach() had a bug...
>
>Please let me know, if you have anything you need or you want me to do.
>Any suggestions are welcome.
>
>Thanks Jani, I tied without dmalloc. It seems dmalloc does not relate to
>this problem.
>
>--
>Yasuo Ohgaki
>
>>At 10:05 04-09-01, Yasuo Ohgaki wrote:
>>
>>>FYI
>>>
>>>PHP 4.0.8-dev (updated about 30 min ago) has the same problem.
>>>
>>>BTW, I don't enable output compression in PHP. No custom output handler.
>>>I enabled mbstr-enc-trans, but there should be no acutual translation,
>>>since I'm using EUC-JP for both internal/output encoding.
>>>
>>>Yasuo Ohgaki
>>>
>>>Yasuo Ohgaki wrote:
>>>
>>>>I got SIGSEGV.
>>>>GNU gdb 5.0rh-5 Red Hat Linux 7.1
>>>>Copyright 2001 Free Software Foundation, Inc.
>>>>GDB is free software, covered by the GNU General Public License, and
>>>>you are
>>>>welcome to change it and/or distribute copies of it under certain
>>>>conditions.
>>>>Type "show copying" to see the conditions.
>>>>There is absolutely no warranty for GDB. Type "show warranty" for details.
>>>>This GDB was configured as "i386-redhat-linux"...
>>>>(gdb) run -X
>>>>Starting program: /usr/sbin/httpd -X
>>>>[Tue Sep 4 14:10:25 2001] [warn] Loaded DSO lib/apache/mod_gzip.so
>>>>uses plain Apache 1.3 API, this module might crash under EAPI! (please
>>>>recompile it with -DEAPI)
>>>>Program received signal SIGSEGV, Segmentation fault.
>>>>0x40106fb6 in chunk_free (ar_ptr=0x401aff00, p=0x819f1f8) at malloc.c:3142
>>>>3142 malloc.c: No such file or directory.
>>>> in malloc.c
>>>>(gdb) bt
>>>>#0 0x40106fb6 in chunk_free (ar_ptr=0x401aff00, p=0x819f1f8) at
>>>>malloc.c:3142
>>>>#1 0x40106d59 in __libc_free (mem=0x819f200) at malloc.c:3054
>>>>#2 0x40597a05 in free_zend_constant (c=0x81bc1a8) at zend_constants.c:34
>>>>#3 0x405b2a59 in zend_hash_del_key_or_index (ht=0x80bfca8,
>>>>arKey=0x81bc190 "include_path",
>>>> nKeyLength=13, h=3932814155, flag=0) at zend_hash.c:512
>>>>#4 0x405b3340 in zend_hash_reverse_apply (ht=0x80bfca8,
>>>> apply_func=0x40597acc <clean_non_persistent_constant>) at
>>>> zend_hash.c:741
>>>>#5 0x40597e86 in clean_non_persistent_constants () at zend_constants.c:163
>>>>#6 0x405a1da8 in shutdown_executor () at zend_execute_API.c:194
>>>>#7 0x405ac92f in zend_deactivate () at zend.c:594
>>>>#8 0x405bde23 in php_request_shutdown (dummy=0x0) at main.c:736
>>>>#9 0x405ba12e in apache_php_module_main (r=0x81993f8,
>>>>display_source_mode=0)
>>>> at sapi_apache.c:96
>>>>#10 0x405baf24 in send_php (r=0x81993f8, display_source_mode=0,
>>>> filename=0x819b160
>>>> "/home/httpd/dev/ygb/support/feedback/question/index.shtml")
>>>> at mod_php4.c:575
>>>>#11 0x405baf9e in send_parsed_php (r=0x81993f8) at mod_php4.c:590
>>>>#12 0x08055927 in ap_invoke_handler () at eval.c:41
>>>>#13 0x08069bdb in process_request_internal () at eval.c:41
>>>>#14 0x08069c3c in ap_process_request () at eval.c:41
>>>>#15 0x08061011 in child_main () at eval.c:41
>>>>#16 0x080611e0 in make_child () at eval.c:41
>>>>#17 0x08061354 in startup_children () at eval.c:41
>>>>#18 0x080619a3 in standalone_main () at eval.c:41
>>>>#19 0x080621db in main () at eval.c:41
>>>>#20 0x400a3177 in __libc_start_main (main=0x8061e28 <main>, argc=2,
>>>>ubp_av=0xbffffa3c,
>>>> init=0x804fa20 <_init>, fini=0x8099f6c <_fini>,
>>>> rtld_fini=0x4000e184 <_dl_fini>,
>>>> stack_end=0xbffffa34) at ../sysdeps/generic/libc-start.c:129
>>>>(gdb)
>>>>./configure \
>>>>--enable-debug \
>>>>--with-dmalloc \
>>>>--with-apxs \
>>>>--disable-short-tags \
>>>>--without-mysql \
>>>>--enable-bcmath \
>>>>--enable-ftp \
>>>>--enable-shmop \
>>>>--enable-sysvsem \
>>>>--enable-sysvshm \
>>>>--enable-sockets \
>>>>--enable-mbstring \
>>>>--enable-mbstr-enc-trans \
>>>>--enable-memory-limit \
>>>>--enable-wddx \
>>>>--with-bz2 \
>>>>--with-curl \
>>>>--with-ftp \
>>>>--with-iconv \
>>>>--with-mhash \
>>>>--with-mcrypt \
>>>>--with-openssl \
>>>>--with-pgsql \
>>>>--with-regex=system \
>>>>--with-zlib \
>>>>--with-gd=../gd-2.0.1 \
>>>> --enable-gd-native-ttf \
>>>> --with-freetype-dir=/usr/local \
>>>> --with-jpeg-dir=/usr \
>>>> --with-png-dir=/usr \
>>>> --with-xpm-dir=/usr/X11R6 \
>>>
>>>
>>>
>>>
>>>_________________________________________________________
>>>Do You Yahoo!?
>>>Get your free @yahoo.com address at http://mail.yahoo.com
>>>
>>>
>>>--
>>>PHP Development Mailing List <http://www.php.net/>
>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>To contact the list administrators, e-mail: [EMAIL PROTECTED]
>>
>>--
>>Zeev Suraski <[EMAIL PROTECTED]>
>>CTO & co-founder, Zend Technologies Ltd. http://www.zend.com/
>
>
>
>
>_________________________________________________________
>Do You Yahoo!?
>Get your free @yahoo.com address at http://mail.yahoo.com
>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]