ID: 30562 Comment by: phpbugs at w-wins dot com Reported By: guth at fiifo dot u-psud dot fr Status: Open Bug Type: Zend Engine 2 problem Operating System: Linux PHP Version: 5.0.2 New Comment:
--- Simpler test case --- <?php class callee{ public $function_last; function __call($func,$args){ $this->function_last=$func; } } $object=new callee; $object->bad(); var_dump($object->function_last); ?> --- Expected output --- string(3) "bad" --- Produced output --- UNKNOWN:0 Previous Comments: ------------------------------------------------------------------------ [2004-10-26 12:36:40] guth at fiifo dot u-psud dot fr More informations : <?php class XmlGenerator { private $stock; public function set($item) { $this->stock['plip'] = $item; var_dump($this->stock); } public function get() { var_dump($this->stock); } } class MyClass { public function __call($method, $args) { $xml = new XmlGenerator(); $xml->set($method); return $xml; } } $object = new MyClass; $xml = $object->plip(); $xml->get(); ?> Expected result: array(1) { ["plip"]=> string(4) "plip" } array(1) { ["plip"]=> string(4) "plip" } Actual result: array(1) { ["plip"]=> string(4) "plip" } array(1) { ["plip"]=> &UNKNOWN:0 } ------------------------------------------------------------------------ [2004-10-26 12:28:15] guth at fiifo dot u-psud dot fr Description: ------------ hello, Another segmentation fault in PHP when using method __call(). See the following code... Reproduce code: --------------- <?php class XmlGenerator { private $stock; public function set($item) { $this->stock = $item; } public function get() { return $this->stock; } } class MyClass { public function __call($method, $args) { $iLovePHP = $method; /* // Uncomment this code and this will work properly $iLovePHP = ""; for($i = 0, $count = strlen($method); $i < $count; $i++) { $iLovePHP .= $method{$i}; } */ $xml = new XmlGenerator(); $xml->set($iLovePHP); return $xml; } } $object = new MyClass; $xml = $object->plip(); echo $xml->get(); ?> Expected result: ---------------- plip Actual result: -------------- Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1075737248 (LWP 3866)] 0x403d7879 in _get_zval_ptr (node=0x16b9f040, Ts=0xffccb008, should_free=0xffcc8cbf) at /usr/src/php5/Zend/zend_execute.c:102 102 *should_free = 0; (gdb) bt #0 0x403d7879 in _get_zval_ptr (node=0x16b9f040, Ts=0xffccb008, should_free=0xffcc8cbf) at /usr/src/php5/Zend/zend_execute.c:102 #1 0x3d01acbf in ?? () #2 0x16b9f040 in ?? () #3 0xffccb008 in ?? () #4 0xffcc8cbf in ?? () #5 0x3d018cbf in ?? () #6 0x00000140 in ?? () I get an other segfault with a different code : Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1075737248 (LWP 3722)] 0x403d1862 in zend_init_string_handler (execute_data=0xbfffcbe0, opline=0x8171630, op_array=0x816f57c) at /usr/src/php/Zend/zend_execute.c:2377 2377 EX_T(opline->result.u.var).tmp_var.value.str.val = emalloc(1); (gdb) bt #0 0x403d1862 in zend_init_string_handler (execute_data=0xbfffcbe0, opline=0x8171630, op_array=0x816f57c) at /usr/src/php/Zend/zend_execute.c:2377 #1 0x403cebee in execute (op_array=0x816f57c) at /usr/src/php/Zend/zend_execute.c:1400 #2 0x403d2791 in zend_do_fcall_common_helper (execute_data=0xbfffce20, opline=0x816b98c, op_array=0x816706c) at /usr/src/php/Zend/zend_execute.c:2740 #3 0x403d2c63 in zend_do_fcall_by_name_handler (execute_data=0xbfffce20, opline=0x816b98c, op_array=0x816706c) at /usr/src/php/Zend/zend_execute.c:2825 #4 0x403cebee in execute (op_array=0x816706c) at /usr/src/php/Zend/zend_execute.c:1400 #5 0x403a9f5d in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /usr/src/php/Zend/zend.c:1060 #6 0x40362a94 in php_execute_script (primary_file=0xbffff190) at /usr/src/php/main/main.c:1628 #7 0x403dab14 in apache_php_module_main (r=0x815c29c, display_source_mode=0) at /usr/src/php/sapi/apache/sapi_apache.c:54 #8 0x403dba9f in send_php (r=0x815c29c, display_source_mode=0, filename=0x815cd84 "/www/test.php") at /usr/src/php/sapi/apache/mod_php5.c:622 #9 0x403dbb18 in send_parsed_php (r=0x815c29c) at /usr/src/php/sapi/apache/mod_php5.c:637 #10 0x08071e77 in ap_invoke_handler () #11 0x08086ebd in process_request_internal () #12 0x08086f1c in ap_process_request () #13 0x0807df40 in child_main () #14 0x0807e0e8 in make_child () #15 0x0807e24e in startup_children () #16 0x0807e90e in standalone_main () #17 0x0807f12c in main () ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=30562&edit=1