From:             [EMAIL PROTECTED]
Operating system: Redhat 7.3
PHP version:      4.2.3
PHP Bug Type:     Reproducible crash
Bug description:  segfault on child process

I am running IMP, a web-mail system put out by the Horde group
(http://www.horde.org).  Ocassionaly, I am experiencing segfaults on some
of the child processes.  For example in my error_log i get the following
print outs.

[notice] child pid 2057 exit signal Segmentation fault (11)

In IE I typically see Page Cannot Be Displayed Error.  If I refresh the
browser everything continues to work correctly for a while.  This seg
fault happens after viewing 10-20 e-mails in a row and can be reliably
reproduced (However, its not one particular e-mail that is causing it to
crash) I don't see the Page Cannot Be Displayed error in Mozilla, but I
think the server is still ocassionally seg faulting, just that Mozilla is
doing a better job of handling the error and resubmitting the data to the
server.

Here is a list of the things relating to PHP that I am running on the
server:

RedHat 7.3
PHP 4.2.3
Apache 1.3.26
Mod_SSL-2.8.10-1.3.26
openssl-0.9.6g
mm-1.2.1

All of these programs were compiled from source on this machine.

I tried configuring php with --enable-debug, but after I did that the seg
faults stopped and I receive the following message in the logs:

Last leak repeated 14 times
zend_language_scanner.c(4371) :  Freeing 0x083E7C6C (8 bytes),
script=/usr/local/apache/htdocs/horde/imp/compose.php
Last leak repeated 14 times
zend_language_scanner.c(4371) :  Freeing 0x08379A8C (8 bytes),
script=/usr/local/apache/htdocs/horde/imp/mailbox.php
Last leak repeated 14 times
...
...
<lots more of these>

I configured PHP with the following options:

./configure --with-apxs=/usr/local/apache/bin/apxs --enable-track-vars
--with-openssl --with-zlib --with-bz2 --with-pspell --with-db3=/usr/lib
--enable-ftp --with-gd --with-imap=/usr/local/imap-2001a
--with-imap-ssl=/usr/local/imap-2001a --with-ldap --with-jpeg-dir=/usr/lib
--with-xpm-dir=/usr/lib --with-png-dir=/usr/lib
--with-freetype-dir=/usr/lib --enable-sigchild --with-gettext
--with-mcrypt --with-xml --with-mysql=/usr/local/mysql --enable-cli
--with-dom --with-dom-xslt --with-dom-exslt --with-mhash

In order to narrow down the problem further I followed the instructions
about obtaining a backtrace.  What I did was run the following commands

1) gdb /usr/local/apache/bin/httpd
a) run -X -DSSL -f /usr/local/apache/conf/httpd.conf
b) <proceeded to view some e-mails under IE>
c) <obtained backtrace>

Here is the output from the backtrace:

Program received signal SIGSEGV, Segmentation fault.
0x4207fa78 in strcmp () from /lib/i686/libc.so.6
(gdb) bt
#0  0x4207fa78 in strcmp () from /lib/i686/libc.so.6
#1  0x4034a440 in pcre_get_compiled_regex (regex=0x818d7c4 "|MSIE
([0-9.]+)|", 
    extra=0xbfff44c4, preg_options=0xbfff44c8) at php_pcre.c:154
#2  0x4034ab7c in php_pcre_match (ht=3, return_value=0x821a66c,
this_ptr=0x0, 
    return_value_used=1, global=0) at php_pcre.c:386
#3  0x4034aedd in zif_preg_match (ht=3, return_value=0x821a66c,
this_ptr=0x0, 
    return_value_used=1) at php_pcre.c:523
#4  0x402ea409 in execute (op_array=0x8441734) at ./zend_execute.c:1598
#5  0x402ea5ff in execute (op_array=0x8252e54) at ./zend_execute.c:1638
#6  0x402ea5ff in execute (op_array=0x82ab93c) at ./zend_execute.c:1638
#7  0x402ec366 in execute (op_array=0x83b706c) at ./zend_execute.c:2141
#8  0x402f7db4 in zend_execute_scripts (type=8, retval=0x0, file_count=3)
    at zend.c:812
#9  0x40304f91 in php_execute_script (primary_file=0xbffff6f0) at
main.c:1383
#10 0x40300dd2 in apache_php_module_main (r=0x815d970,
display_source_mode=0)
    at sapi_apache.c:90
#11 0x403018ae in send_php (r=0x815d970, display_source_mode=0,
filename=0x0)
    at mod_php4.c:575
#12 0x40301902 in send_parsed_php (r=0x815d970) at mod_php4.c:590
#13 0x0806bdcf in ap_invoke_handler ()
#14 0x08080e53 in process_request_internal ()
#15 0x08080eb4 in ap_process_request ()
#16 0x08077df1 in child_main ()
---Type <return> to continue, or q <return> to quit---
#17 0x08077fc0 in make_child ()
#18 0x08078134 in startup_children ()
#19 0x080787ac in standalone_main ()
#20 0x0807902b in main ()
#21 0x42017499 in __libc_start_main () from /lib/i686/libc.so.6
(gdb) frame 4
#4  0x402ea409 in execute (op_array=0x8441734) at ./zend_execute.c:1598
1598                                                    ((zend_internal_function *)
EX(function_state).function)->handler(EX(opline)->extended_value,
EX(Ts)[EX(opline)->result.u.var].var.ptr, EX(object).ptr,
return_value_used TSRMLS_CC);

Any help would be appreciated in figuring out what is going wrong here.  I
can provide any other information if needed.

Thanks

-- 
Edit bug report at http://bugs.php.net/?id=19482&edit=1
-- 
Try a CVS snapshot:  http://bugs.php.net/fix.php?id=19482&r=trysnapshot
Fixed in CVS:        http://bugs.php.net/fix.php?id=19482&r=fixedcvs
Fixed in release:    http://bugs.php.net/fix.php?id=19482&r=alreadyfixed
Need backtrace:      http://bugs.php.net/fix.php?id=19482&r=needtrace
Try newer version:   http://bugs.php.net/fix.php?id=19482&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=19482&r=support
Expected behavior:   http://bugs.php.net/fix.php?id=19482&r=notwrong
Not enough info:     http://bugs.php.net/fix.php?id=19482&r=notenoughinfo
Submitted twice:     http://bugs.php.net/fix.php?id=19482&r=submittedtwice
register_globals:    http://bugs.php.net/fix.php?id=19482&r=globals

Reply via email to