From: [EMAIL PROTECTED] Operating system: RedHat 6.1 PHP version: 4.0.4pl1 PHP Bug Type: Reproduceable crash Bug description: PHP/Apache seg fault when serializing complex objects I'm getting segmentation faults whenever I use the serialize function to serialize a tree of objects. Consider the following (these are similar structures to what I'm actually using that are causing the crash): class TreeNode { var $subNodes; function &getSubNodes() { return $this->subNodes; } function &addSubNode($newSubNode) { $this->subNodes[] = $newSubNode; return $this->subNodes[count($this->subNodes) - 1]; } function deleteSubNode($pos) { array_splice($this->subNodes, $pos, 1); } } class Data extends TreeNode { var $var1; var $var2; var $var3; var $var4; var $var5; var $var6; var $var7; var $varArray1 = array(); // array of objects var $varArray2 = array(); // assoc. array var $varArray3 = array(); // assoc. array var $varArray4 = array(); // assoc. array var $varArray5 = array(); // assoc. array // multiple get/set functions for properties function getVar1() { return $this->var1; } function setVar1($newVal) { $this->var1 = $newVal; } ... ... } Now, imagine starting with a base Data object... $base = new Data(); and adding other sub nodes to it... $sub1 = &$base->addSubNode(new Data()); $sub2 = &$base->addSubNode(new Data()); $sub3 = &$base->addSubNode(new Data()); and adding sub nodes to sub nodes... $sub1->addSubNode(new Data()); $sub1->addSubNode(new Data()); $sub1->addSubNode(new Data()); $sub2->addSubNode(new Data()); $sub3->addSubNode(new Data()); etc, etc... to where you end up with a tree structure. The segmentation fault is occuring when I'm trying to serialize the tree structure using the 'serialize' function. serialize($base); Here's the error I get while running ./httpd -X in gdb: Program received signal SIGSEGV, Segmentation fault. __libc_free (mem=0x54) at malloc.c:3005 3005 malloc.c: No such file or directory After I get that error, the script continues to execute. But, sometimes I get the following in different areas where serialize($base) is being used multiple times: Program received signal SIGSEGV, Segmentation fault. _efree (ptr=0x0) at zend_alloc.c:211 211 CALCULATE_REAL_SIZE_AND_CACHE_INDEX(p->size); Here's the gdb backtrace: #0 _efree (ptr=0x0) at zend_alloc.c:211 #1 0x80c667d in php_var_serialize (buf=0x82ecaf4, struc=0x8314e30, var_hash=0xbfff5c5c) at var.c:311 #2 0x80c68ba in php_var_serialize (buf=0x82ecaf4, struc=0x8314e70, var_hash=0xbfff5c5c) at var.c:349 #3 0x80c68ba in php_var_serialize (buf=0x82ecaf4, struc=0x8314ea8, var_hash=0xbfff5c5c) at var.c:349 #4 0x80c68ba in php_var_serialize (buf=0x82ecaf4, struc=0x8314ee8, var_hash=0xbfff5c5c) at var.c:349 #5 0x80c68ba in php_var_serialize (buf=0x82ecaf4, struc=0x82ec0f0, var_hash=0xbfff5c5c) at var.c:349 #6 0x80c68ba in php_var_serialize (buf=0x82ecaf4, struc=0x83181a0, var_hash=0xbfff5c5c) at var.c:349 #7 0x80c68ba in php_var_serialize (buf=0x82ecaf4, struc=0x8315720, var_hash=0xbfff5c5c) at var.c:349 #8 0x80c68ba in php_var_serialize (buf=0x82ecaf4, struc=0x81fd404, var_hash=0xbfff5c5c) at var.c:349 #9 0x80c71ec in php_if_serialize (ht=1, return_value=0x82ecaf4, this_ptr=0x0, return_value_used=1) at var.c:631 #10 0x81048bc in execute (op_array=0x82d39c4) at ./zend_execute.c:1519 #11 0x8104aa1 in execute (op_array=0x8208650) at ./zend_execute.c:1559 #12 0x8104aa1 in execute (op_array=0x81ff41c) at ./zend_execute.c:1559 #13 0x80dee38 in zend_execute_scripts (type=8, file_count=3) at zend.c:729 #14 0x807d2d8 in php_execute_script (primary_file=0xbffffa24) at main.c:1221 #15 0x80ea08e in apache_php_module_main (r=0x81e8144, display_source_mode=0) at sapi_apache.c:89 #16 0x807aed6 in send_php () #17 0x807af08 in send_parsed_php () #18 0x810ea03 in ap_invoke_handler () #19 0x8121f39 in process_request_internal () #20 0x8121f9c in ap_process_request () #21 0x811983e in child_main () #22 0x81199cc in make_child () #23 0x8119b29 in startup_children () #24 0x811a156 in standalone_main () #25 0x811a8e3 in main () #26 0x400ad9cb in __libc_start_main (main=0x811a59c <main>, argc=2, argv=0xbffffbd4, init=0x8061e04 <_init>, fini=0x8147e7c <_fini>, rtld_fini=0x4000ae60 <_dl_fini>, stack_end=0xbffffbcc) at ../sysdeps/generic/libc-start.c:92 I'm using RedHat 6.1 / Apache 1.3.12 / PHP 4.0.4pl1 PHP is configured as a DSO configure options for PHP are " --with-apxs=/usr/local/apache/bin/apxs --with-mysql --with-ftp --with-xml --enable-track-vars Hope that helps. I can try to create a script that can recreate the problem, but I've been unsuccessful in the couple of times I've already tried. Let me know what else you need of me. -- Edit Bug report at: http://bugs.php.net/?id=9016&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]