ID: 29681 Updated by: [EMAIL PROTECTED] Reported By: tony at marston-home dot demon dot co dot uk Status: Open -Bug Type: Apache2 related +Bug Type: Zend Engine 2 problem Operating System: WindowsXP PHP Version: 5.0.1 New Comment:
The original problem here, reproduced using the script bundle posted by Tony, triggers crashes in free() when run with "MALLOC_CHECK_=3", using 5.0.4-dev. Backtrace below. Doesn't look like this is Apache-related: #5 0x0041baca in free () from /lib/tls/libc.so.6 No symbol table info available. #6 0x010035b7 in _efree (ptr=0x86e443c) at /net/jedi/local/php/5.0/Zend/zend_alloc.c:287 p = (zend_mem_header *) 0x4e0800 cache_index = 6 #7 0x0101f1fa in zend_hash_destroy (ht=0x86f1714) at /net/jedi/local/php/5.0/Zend/zend_hash.c:526 p = (Bucket *) 0x0 q = (Bucket *) 0x86e47dc #8 0x01029c7f in zend_objects_free_object_storage (object=0x872be84) at /net/jedi/local/php/5.0/Zend/zend_objects.c:91 No locals. #9 0x0102c24a in zend_objects_store_del_ref (zobject=0x0) at /net/jedi/local/php/5.0/Zend/zend_objects_API.c:159 handle = 1 obj = (struct _store_object *) 0x86d9b88 #10 0x010170d0 in _zval_dtor (zvalue=0x86efb2c) at /net/jedi/local/php/5.0/Zend/zend_variables.c:61 No locals. #11 0x0100c491 in _zval_ptr_dtor (zval_ptr=0x10a995c) at /net/jedi/local/php/5.0/Zend/zend_execute_API.c:392 No locals. #12 0x0104b894 in zend_do_fcall_common_helper (execute_data=0xbff34610, opline=0x86ee780, op_array=0x86e306c) at /net/jedi/local/php/5.0/Zend/zend_execute.c:2797 i = 141458196 p = (zval **) 0x86efb2c arg_count = 17471360 original_return_value = (zval **) 0xbff346ac current_scope = (zend_class_entry *) 0x0 current_this = (zval *) 0x0 return_value_used = 1 should_change_scope = 1 '\001' #13 0x0104ba48 in zend_do_fcall_by_name_handler (execute_data=0x0, opline=0x86ee780, op_array=0x86e306c) at /net/jedi/local/php/5.0/Zend/zend_execute.c:2825 No locals. #14 0x01039b77 in execute (op_array=0x86e306c) at /net/jedi/local/php/5.0/Zend/zend_execute.c:1400 execute_data = {opline = 0x86ee780, function_state = { function_symbol_table = 0x870e404, function = 0x872a444, reserved = {0x100f260, 0x86e3364, 0xbff36970, 0x0}}, fbc = 0x872a444, fbc_constructor = 0x0, op_array = 0x86e306c, object = 0x86efb2c, Ts = 0xbff33430, original_in_execution = 0 '\0', calling_scope = 0x86f0a54, prev_execute_data = 0x0} #15 0x01018b25 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /net/jedi/local/php/5.0/Zend/zend.c:1069 files = 0xbff34764 "" i = 1 file_handle = (zend_file_handle *) 0xbff36970 orig_op_array = (zend_op_array *) 0x0 local_retval = (zval *) 0x0 Previous Comments: ------------------------------------------------------------------------ [2004-12-19 15:37:13] jason at amp-design dot net I also get this error in one of my scripts. I have a feeling it is to do with either Exceptions or overloading using SPL ArrayAccess (or a combination of the two). ------------------------------------------------------------------------ [2004-12-08 20:16:54] akomasinski at gmail dot com Same error in 5.0.2 + Apache 2.0.50 + MySQL 4.0.22 Windows XP SP1 ------------------------------------------------------------------------ [2004-12-02 05:40:02] aristotle at brettia dot com I had this same problem. My stats: Windows XP SP2, AMD Athlon 64 (32-bit Windows, though) PHP 5.0.1, Apache 2.0.50, MySQL 4.0.22 Apache Error Log Excerpts: (Restarted Server) [Wed Dec 01 21:14:56 2004] [notice] mod_python: Creating 32 session mutexes based on 0 max processes and 250 max threads. [Wed Dec 01 21:14:57 2004] [notice] Parent: Created child process 3960 [Wed Dec 01 21:14:57 2004] [notice] mod_python: Creating 32 session mutexes based on 0 max processes and 250 max threads. [Wed Dec 01 21:14:57 2004] [notice] Child 3960: Child process is running [Wed Dec 01 21:14:57 2004] [notice] Child 3960: Acquired the start mutex. [Wed Dec 01 21:14:57 2004] [notice] Child 2080: Released the start mutex [Wed Dec 01 21:14:57 2004] [notice] Child 3960: Starting 250 worker threads. [Wed Dec 01 21:14:58 2004] [notice] Child 2080: Waiting for 250 worker threads to exit. [Wed Dec 01 21:14:58 2004] [notice] Child 2080: All worker threads have exited. [Wed Dec 01 21:14:59 2004] [notice] Child 2080: Child process is exiting (This error happens upon running a script.) [Wed Dec 01 21:15:04 2004] [notice] Parent: child process exited with status 3221225477 -- Restarting. [Wed Dec 01 21:15:04 2004] [notice] mod_python: Creating 32 session mutexes based on 0 max processes and 250 max threads. [Wed Dec 01 21:15:04 2004] [notice] Parent: Created child process 2280 [Wed Dec 01 21:15:04 2004] [notice] mod_python: Creating 32 session mutexes based on 0 max processes and 250 max threads. [Wed Dec 01 21:15:04 2004] [notice] Child 2280: Child process is running [Wed Dec 01 21:15:04 2004] [notice] Child 2280: Acquired the start mutex. [Wed Dec 01 21:15:04 2004] [notice] Child 2280: Starting 250 worker threads. [Wed Dec 01 21:19:35 2004] [notice] Parent: Received restart signal -- Restarting the server. [Wed Dec 01 21:19:35 2004] [notice] Child 2280: Exit event signaled. Child process is ending. [Wed Dec 01 21:19:35 2004] [notice] Parent: Created child process 2088 [Wed Dec 01 21:19:36 2004] [notice] Child 2088: Child process is running [Wed Dec 01 21:19:36 2004] [notice] Child 2088: Acquired the start mutex. [Wed Dec 01 21:19:36 2004] [notice] Child 2280: Released the start mutex [Wed Dec 01 21:19:36 2004] [notice] Child 2088: Starting 250 worker threads. [Wed Dec 01 21:19:37 2004] [notice] Child 2280: Waiting for 250 worker threads to exit. [Wed Dec 01 21:19:41 2004] [notice] Child 2280: All worker threads have exited. [Wed Dec 01 21:19:41 2004] [notice] Child 2280: Child process is exiting (I don't know how much of this is useful, so I didn't prune much out.) How Problem Was Fixed 1. Disabled mod_python (Worked once without error) 2. Enabled mod_python 3. Fixed code bug where I was attempting to __get() a non-existent key from an array that was a property of an overloaded (I think) object. The __get() function in question: public function __get($key) { if($this->isValid($key)) { return $this->data_array[$key]; } else { throw new ArrayStoreException('Variable with key [' . $key . '] does not exist in the data array.',1); return false; } } And the isValid function which __get() calls: public function isValid($key) { if(array_key_exists($key,$this->data_array)) { return true; } else { return false; } } 4. Reran the script, everything was fine. ------------------------------------------------------------------------ [2004-11-16 12:23:16] php_bug at cklowe dot com This bug looks to be the same as bug 26286: http://bugs.php.net/bug.php?id=26286 ------------------------------------------------------------------------ [2004-10-21 19:20:21] tony at marston-home dot demon dot co dot uk I have reinstated my sample code at http://www.tonymarston.co.uk/error.zip There are instructions inside on how to reproduce the error. ------------------------------------------------------------------------ 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/29681 -- Edit this bug report at http://bugs.php.net/?id=29681&edit=1