php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #12569 Consistent Apache crash on 22nd request in Zend Optimiser
Submitted: 2001-08-04 18:56 UTC Modified: 2001-08-04 18:59 UTC
From: nick at macaw dot demon dot co dot uk Assigned:
Status: Not a bug Package: Scripting Engine problem
PHP Version: 4.0.6 OS: Linux
Private report: No CVE-ID: None
 [2001-08-04 18:56 UTC] nick at macaw dot demon dot co dot uk
The apache module with optimiser enabled, and which up to now hasn't been crashing, now does so reproducably. A b/t is below although maybe not a lot to go on I'm afraid, but the events around the crash are *very significant*. The point of failure is always the same, and after starting a single apache process with -X, was always crashing on the 22nd request. A *most significant* thing is that adding effectively a dummy line of code, e.g. $x = true; changed the period of crashing from being the 22nd time to always the 16th time. Adding a second line the crashing stopped. Note that once determined, the crash interval is ALWAYS the same for a given state of my application.

Clearly this is a serious, although in the general case possibly rare, problem, and probably one of those bugs that only emmerges for a very specific set of circumstances. I'll happily arrange access to my machine for an official developer to help diagnose this now, but I'll take a snapshot of my DB, code base and shared memory anyway for a chance of future analysis.

Clearly something to focus on is why the crash would always occur after: 

1) a specific number of apache requests, and
2) this number depends on the code structure.

For the trace below, assuming that the zend_file_handle structures being passed are already initialised, then they're corrupt with bogus fd's and file file names for example.  As an aside, I did a purify run on Solaris and there are a significant number UMR instances, which whilst not always indicative of a problem, typically are, and so I suspect some fundamental memory problems that one typically 'gets away with'. I'll look at this more next week.

Anyway, the trace is:

(gdb) where
#0  0x80f5b39 in php_if_array_reduce (ht=3, return_value=0x8279dc4, this_ptr=0x0, return_value_used=1) at array.c:2886
#1  0x40253f84 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#2  0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#3  0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#4  0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#5  0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#6  0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#7  0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#8  0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#9  0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#10 0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#11 0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#12 0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#13 0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#14 0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#15 0x40254183 in zend_reverse_table () from /usr/local/Zend/lib/ZendOptimizer.so
#16 0x4025f01d in zstd__mhm () from /usr/local/Zend/lib/ZendOptimizer.so
#17 0x80dde0b in zend_execute_scripts (type=8, file_count=3) at zend.c:752
#18 0x806a6fb in php_execute_script (primary_file=0xbffff768) at main.c:1206
#19 0x80eaa1b in apache_php_module_main (r=0x8246a2c, display_source_mode=0) at sapi_apache.c:89
#20 0x8067bee in send_php ()
#21 0x8067c36 in send_parsed_php ()
#22 0x8111609 in ap_invoke_handler ()
#23 0x8126a1f in process_request_internal ()
#24 0x8126a92 in ap_process_request ()
#25 0x811d8a6 in child_main ()
#26 0x811da85 in make_child ()
---Type <return> to continue, or q <return> to quit---
#27 0x811dc06 in startup_children ()
#28 0x811e27d in standalone_main ()
#29 0x811eacc in main ()
#30 0x400c4a5e in __libc_start_main () at ../sysdeps/generic/libc-start.c:93
(gdb)              

Nick
    

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-08-04 18:59 UTC] rasmus@php.net
Please don't post bug reports for proprietary products in the PHP bug database.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri May 03 15:01:31 2024 UTC