ID:               24635
 Updated by:       [EMAIL PROTECTED]
 Reported By:      eric at cosky dot com
-Status:           Open
+Status:           Verified
-Bug Type:         Reproducible crash
+Bug Type:         Zend Engine 2 problem
-Operating System: Windows XP SP1
+Operating System: *
 PHP Version:      5CVS-2003-07-13 (dev)
 New Comment:

Verified, backtrace as follows:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (runnable)]
_efree (ptr=0x6f697463) at /usr/src/web/php/php5/Zend/zend_alloc.c:257
257             CALCULATE_REAL_SIZE_AND_CACHE_INDEX(p->size);
(gdb) bt
#0  _efree (ptr=0x6f697463) at
/usr/src/web/php/php5/Zend/zend_alloc.c:257
#1  0x813e01b in _zval_ptr_dtor (zval_ptr=0x4029afc0) at
/usr/src/web/php/php5/Zend/zend_execute.h:67
#2  0x814b075 in zend_hash_clean (ht=0x4029adbc) at
/usr/src/web/php/php5/Zend/zend_hash.c:535
#3  0x816bb91 in zend_do_fcall_common_helper (execute_data=0xbfffd53c,
op_array=0x4029839c)
    at /usr/src/web/php/php5/Zend/zend_execute.c:2673
#4  0x816bd80 in zend_do_fcall_by_name_handler
(execute_data=0xbfffd53c, op_array=0x4029839c)
    at /usr/src/web/php/php5/Zend/zend_execute.c:2725
#5  0x815c2c4 in execute (op_array=0x4029839c) at
/usr/src/web/php/php5/Zend/zend_execute.c:1194
#6  0x8146b20 in zend_execute_scripts (type=8, retval=0x0,
file_count=3) at /usr/src/web/php/php5/Zend/zend.c:1017
#7  0x811b8d3 in php_execute_script (primary_file=0xbffff898) at
/usr/src/web/php/php5/main/main.c:1695
#8  0x8175503 in main (argc=2, argv=0xbffff904) at
/usr/src/web/php/php5/sapi/cgi/cgi_main.c:1560
#9  0x401b19cb in __libc_start_main (main=0x8174c80 <main>, argc=2,
argv=0xbffff904, init=0x806985c <_init>, 
    fini=0x8175c14 <_fini>, rtld_fini=0x4000aea0 <_dl_fini>,
stack_end=0xbffff8fc)
    at ../sysdeps/generic/libc-start.c:92



Previous Comments:
------------------------------------------------------------------------

[2003-07-13 12:53:28] eric at cosky dot com

Description:
------------
The following block of code will crash the PHP I installed from
php5-win32-200307130630.zip (and previous versions).

I've read that I should be using '&new' to gain proper use of
destructors, but it seems reasonable to say that using 'new' shouldn't
cause a server crash. Perhaps a useful thing to do would be to have a
class that has a __destruct() function produce an error if created
without '&new'? 


Reproduce code:
---------------
class SiteClass {
        function __construct()  { $this->page = new PageClass(); }
}
class PageClass {
        function Display() {
                $section = new SectionClass("PageClass::Display");
        }
}
class SectionClass {
        function __construct($comment) {
                $this->Comment = $comment;
        }
        function __destruct() {
                out($this->Comment); // this line doesn't crash PHP 
                out("\n<!-- End Section: " . $this->Comment . "-->"); // this line
crashes PHP
        }
}
function out($code) { return; }
$site = new SiteClass(); 
$site->page->Display();

Expected result:
----------------
Nothing.

Actual result:
--------------
System alert for PHP crashing.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=24635&edit=1

Reply via email to