Edit report at https://bugs.php.net/bug.php?id=53980&edit=1
ID: 53980
Comment by: miau dot jp at gmail dot com
Reported by: skibi82 at interia dot pl
Summary: On the Windows-version of PHP can not allocate more
memory than 512 memory_limi
Status: Open
Type: Bug
Package: PHP options/info functions
Operating System: Win7 , WinXP, Win2008 srv R2
PHP Version: 5.3.9
Block user comment: N
Private report: N
New Comment:
This is caused by heap size limitation of Windows. A process can use
heap up to nealy 1500MB on recent versions of Windows.
Because of fragmentation, actual limit is less than 1500MB.
For example, I added some debugging code to PHP (see
https://gist.github.com/4011991 ) and ran following sample
script.
----
<?php
ini_set('memory_limit', '3072M');
define('MB', 1024 * 1024);
$str = str_repeat('a', 400 * MB);
$str = '' . $str;
$str .= $str;
>php bug53980.php
[alloc] segment: 0x02CF0048-0x02D30047 size: 262144 (0MB)
[free] segment: 0x02CF0048
[alloc] segment: 0x02CF0048-0x02D30047 size: 262144 (0MB)
[alloc] segment: 0x02D30050-0x02D7004F size: 262144 (0MB)
[alloc] segment: 0x102A0020-0x292E001F size: 419692544 (400MB)
[alloc] segment: 0x292F0020-0x4233001F size: 419692544 (400MB)
[free] segment: 0x102A0020
[realloc from] segment: 0x292F0020
[realloc to] segment: 0x00000000-0x3203FFFF size: 839122944 (800MB)
Fatal error: Out of memory (allocated 420216832) (tried to allocate 838860801
bytes) in C:\***\bug55980.php on line 6
zend_mm_heap corrupted
----
Dispite the heap has nearly 1100MB free space in total, there is no
contiguous 800MB space. Then HeapRealloc() fails and returns NULL.
Previous Comments:
------------------------------------------------------------------------
[2012-03-06 11:51:30] shaun at laughey dot com
Still an issue on PHP 5.3.10 tested on Windows 2008 and Windows 7 using FCGI
and mod_php on both platforms.
------------------------------------------------------------------------
[2012-01-24 18:47:20] skibi82 at interia dot pl
The error still occurs
------------------------------------------------------------------------
[2012-01-24 18:45:19] skibi82 at interia dot pl
Fatal error: Out of memory (allocated 537919488) (tried to allocate 536870913
bytes) XXXX
zend_mm_heap corrupted
The error occurs regardless of the setting memory_limit
------------------------------------------------------------------------
[2011-11-04 15:54:48] skibi8 at interia dot pl
In version 5.3.8 error still occurs
E:\SVN>test.php
5.3.8
Limit:4024M
100
1000
PHP Fatal error: Out of memory (allocated 736362496) (tried to allocate 734003
01 bytes) in E:\SVN\test.php on line 25
---
echo phpversion()."\n";
ini_set ('memory_limit', '4024M');
echo 'Limit:'.ini_get ('memory_limit')."\n";
$mb='';
$x=0;
do {
$x++;
$mb.='X';
}while ($x< 1048576);
echo "100\n";
$x=0;
$mb100='';
do {
$x++;
$mb100.=$mb;
}while ($x< 100);
echo "1000\n";
$x=0;
$gb='';
do {
$x++;
$gb.=$mb100;
}while ($x< 10);
echo "OK\n";
Fatal error: Out of memory (allocated 736362496) (tried to allocate 734003201 b
tes) in E:\SVN\test.php on line 25
zend_mm_heap corrupted
------------------------------------------------------------------------
[2011-11-04 15:40:14] [email protected]
Please try with 5.3.8
------------------------------------------------------------------------
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
https://bugs.php.net/bug.php?id=53980
--
Edit this bug report at https://bugs.php.net/bug.php?id=53980&edit=1