#20985 [Com]: heavy load = Segmentation fault
| From: | jfl at eksperten dot dk | Date: | Sat, 14 Dec 2002 19:59:12 +0000 |
| Subject: | #20985 [Com]: heavy load = Segmentation fault | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-27720@lists.php.net to get a copy of this message | ||
ID: 20985
Comment by: jfl@eksperten.dk
Reported By: jfl@eksperten.dk
Status: Feedback
Bug Type: Reproducible crash
Operating System: Redhat Linux 7.3 & 8
PHP Version: 4.3.0RC3
New Comment:
I'll now start testing Php-4.3.0RC3
Previous Comments:
------------------------------------------------------------------------
[2002-12-14 13:51:02] jfl@eksperten.dk
This is what I get every time with Php 4.2.3 compiled into Apache.
More info @ http://test.webalogic.net/bugs/
I think the bug is happening when Apache is trying to kill children, as
the SIGSEGV is happening when the stress tool is finished.
(gdb) run -X
Starting program: /usr/local/apache/bin/httpd -X
Program received signal SIGSEGV, Segmentation fault.
0x4207c46c in memcpy () from /lib/i686/libc.so.6
(gdb) bt
#0 0x4207c46c in memcpy () from /lib/i686/libc.so.6
#1 0x081041d0 in _mem_block_check ()
#2 0x08104197 in _mem_block_check ()
#3 0x081034a1 in _efree ()
#4 0x0811283c in _zval_dtor ()
#5 0x08109bac in free_zend_constant ()
#6 0x08118c29 in zend_hash_del_key_or_index ()
#7 0x081194a6 in zend_hash_reverse_apply ()
#8 0x08109fb4 in clean_non_persistent_constants ()
#9 0x0810a780 in shutdown_executor ()
#10 0x0811387f in zend_deactivate ()
#11 0x08078500 in php_request_shutdown ()
#12 0x0811f192 in apache_php_module_main ()
#13 0x080761cc in php_restore_umask ()
#14 0x08076237 in php_restore_umask ()
#15 0x08140990 in ap_invoke_handler ()
#16 0x08154d86 in ap_some_auth_required ()
#17 0x08154de6 in ap_process_request ()
#18 0x0814c0aa in ap_child_terminate ()
#19 0x0814c24a in ap_child_terminate ()
#20 0x0814c3b1 in ap_child_terminate ()
#21 0x0814c9de in ap_child_terminate ()
#22 0x0814d1fc in main ()
---Type <return> to continue, or q <return> to quit---
#23 0x420158d4 in __libc_start_main () from /lib/i686/libc.so.6
(gdb) frame 5
#5 0x08109bac in free_zend_constant ()
(gdb) list
1 <unknown>: No such file or directory.
in <unknown>
(gdb) p
The history is empty.
(gdb)
------------------------------------------------------------------------
[2002-12-13 19:14:00] jfl@eksperten.dk
If php is built into apache, where should I then be able to find a core
file?
apache is here: /usr/local/apache/bin
------------------------------------------------------------------------
[2002-12-13 16:53:39] iliaa@php.net
Go to the php directory, inside that directory edit a file called
config.nice, one line above the line, which contains "$@" add the
following line:
'--enable-debug' \
now do:
rm config.cache; make clean; ./config.nice; make; make install
You've now compiled & installed PHP that contains debugging symbols,
when a crash occurs you should be able to see more detailed information
when analyzing core files generated due to crash in PHP.
To see data at a certain step use gdb command such as frame 5, which
will take you to a particular frame, list command, which will show the
source code at this point and then p command to print the values of
various variables & pointers.
------------------------------------------------------------------------
[2002-12-13 16:40:34] jfl@eksperten.dk
> Could you please compile your PHP with --enable-debug
I have done so.
> If you are able to do that then go the step #5
> (free_zend_constant) and see what data the various
> pointers contains.
> I am especially interested in seeing what constant is
> being freed and if it is the same one everytime.
Could you instruct me on how to do this?
My knowledge only covers compiling and the information from here:
http://bugs.php.net/bugs-generating-backtrace.php
------------------------------------------------------------------------
[2002-12-13 09:56:09] iliaa@php.net
Could you please compile your PHP with --enable-debug, this will make
you backtrace contain a lot more information. If you are able to do
that then go the step #5 (free_zend_constant) and see what data the
various pointers contains. I am especially interested in seeing what
constant is being freed and if it is the same one everytime.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/20985
--
Edit this bug report at http://bugs.php.net/?id=20985&edit=1