ID: 47351 Comment by: bloudon at townnews dot com Reported By: tobias dot john at fondsnet dot de Status: Assigned Bug Type: Date/time related Operating System: Mac OS X 10.5 PHP Version: 5.3.0beta1 Assigned To: derick New Comment:
Same bug found in PHP versions 5.2.8 and 5.2.9 on Linux. ----- Test code: for ( $i = 0; $i < 100; $i++ ) { $d = new DateTime(); unset($d); } ----- valgrind --leak-check=yes php test.php: ==20642== 235 bytes in 1 blocks are possibly lost in loss record 4 of 12 ==20642== at 0x40203C0: malloc (vg_replace_malloc.c:149) ==20642== by 0x80AB486: timelib_tzinfo_clone (in /usr/bin/php) ==20642== by 0x8097FD3: timelib_fill_holes (in /usr/bin/php) ==20642== by 0x8095535: (within /usr/bin/php) ==20642== by 0x8095605: zim_DateTime___construct (in /usr/bin/php) ==20642== by 0x817D834: (within /usr/bin/php) ==20642== by 0x819ED4F: execute (in /usr/bin/php) ==20642== by 0x8166F25: zend_execute_scripts (in /usr/bin/php) ==20642== by 0x813862F: php_execute_script (in /usr/bin/php) ==20642== by 0x81A7178: main (in /usr/bin/php) ==20642== ==20642== ==20642== 2,820 bytes in 3 blocks are possibly lost in loss record 8 of 12 ==20642== at 0x40203C0: malloc (vg_replace_malloc.c:149) ==20642== by 0x80AB47A: timelib_tzinfo_clone (in /usr/bin/php) ==20642== by 0x8097FD3: timelib_fill_holes (in /usr/bin/php) ==20642== by 0x8095535: (within /usr/bin/php) ==20642== by 0x8095605: zim_DateTime___construct (in /usr/bin/php) ==20642== by 0x817D834: (within /usr/bin/php) ==20642== by 0x819ED4F: execute (in /usr/bin/php) ==20642== by 0x8166F25: zend_execute_scripts (in /usr/bin/php) ==20642== by 0x813862F: php_execute_script (in /usr/bin/php) ==20642== by 0x81A7178: main (in /usr/bin/php) ==20642== ==20642== ==20642== 132,845 (4,800 direct, 128,045 indirect) bytes in 100 blocks are definitely lost in loss record 9 of 12 ==20642== at 0x401F6FF: calloc (vg_replace_malloc.c:279) ==20642== by 0x80AB420: timelib_tzinfo_ctor (in /usr/bin/php) ==20642== by 0x80AB446: timelib_tzinfo_clone (in /usr/bin/php) ==20642== by 0x8097FD3: timelib_fill_holes (in /usr/bin/php) ==20642== by 0x8095535: (within /usr/bin/php) ==20642== by 0x8095605: zim_DateTime___construct (in /usr/bin/php) ==20642== by 0x817D834: (within /usr/bin/php) ==20642== by 0x819ED4F: execute (in /usr/bin/php) ==20642== by 0x8166F25: zend_execute_scripts (in /usr/bin/php) ==20642== by 0x813862F: php_execute_script (in /usr/bin/php) ==20642== by 0x81A7178: main (in /usr/bin/php) ----- Setting a default time zone through date_default_timezone_set() or putenv() changes the leak to: ==20819== 7,600 (4,800 direct, 2,800 indirect) bytes in 100 blocks are definitely lost in loss record 10 of 10 ==20819== at 0x401F6FF: calloc (vg_replace_malloc.c:279) ==20819== by 0x80AB420: timelib_tzinfo_ctor (in /usr/bin/php) ==20819== by 0x80AB446: timelib_tzinfo_clone (in /usr/bin/php) ==20819== by 0x8097FD3: timelib_fill_holes (in /usr/bin/php) ==20819== by 0x8095535: (within /usr/bin/php) ==20819== by 0x8095605: zim_DateTime___construct (in /usr/bin/php) ==20819== by 0x817D834: (within /usr/bin/php) ==20819== by 0x819ED4F: execute (in /usr/bin/php) ==20819== by 0x8166F25: zend_execute_scripts (in /usr/bin/php) ==20819== by 0x813862F: php_execute_script (in /usr/bin/php) ==20819== by 0x81A7178: main (in /usr/bin/php) Previous Comments: ------------------------------------------------------------------------ [2009-02-23 13:49:09] paul dot assen at xs4all dot nl I found this bug also to be present in PHP 5.2.8 under Windows XP ------------------------------------------------------------------------ [2009-02-10 09:14:49] tobias dot john at fondsnet dot de Description: ------------ Memory allocated by a DateTime object is not released correctly. Inifite loops of allocating DateTime objects let the memory consumption even raise above the php memory limit. Reproduce code: --------------- while(1) { $v = new \DateTime(); } Expected result: ---------------- Infinite loop. Actual result: -------------- php(38699) malloc: *** mmap(size=16777216) failed (error code=12) *** error: can't allocate region *** set a breakpoint in malloc_error_break to debug Bus error ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=47351&edit=1