Edit report at https://bugs.php.net/bug.php?id=81027&edit=1
ID: 81027
Updated by: nikic@php.net
Reported by: gy dot dlcs at gmail dot com
Summary: WeakReference will cause memory leaks
Status: Open
Type: Bug
Package: Unknown/Other Function
Operating System: Linux
PHP Version: 8.0.6
Block user comment: N
Private report: N
New Comment:
Okay, I clearly didn't wait long enough last time. There is indeed a leak here, but a very slow
one.
I used this modified script:
<?php
ini_set('memory_limit', '8M');
$m = memory_get_usage();
for ($i = 0; ; $i++) {
$m2 = memory_get_usage();
if ($m2 > $m) {
$m = $m2;
echo "$i: ", $m, "\n";
}
$a = new stdClass();
$a->a = $a;
$wr = WeakReference::create($a);
unset($a);
// Uncomment next line, memory will not leak
//$wr->get();
// Uncomment next line, memory will leak
!$wr->get();
}
This shows that on every GC cycle (every 10000 iterations) memory usage increases by 560 bytes:
...
5449999: 6453552
5459999: 6454112
5469999: 6454672
5479999: 6455232
...
Previous Comments:
------------------------------------------------------------------------
[2021-05-14 12:08:18] dharman@php.net
I can't reproduce it with 8.0.3 but I can reproduce it with the current snapshot from GIT
------------------------------------------------------------------------
[2021-05-13 11:11:13] gy dot dlcs at gmail dot com
The above test script takes about 1 minute to reproduce the problem, Have you waited long enough?
------------------------------------------------------------------------
[2021-05-11 09:26:31] cmb@php.net
Thanks for the valgrind report, but unfortunately this is useless.
The warnings at the top are bogus, and everything after the SIGINT
is irrelevant. Sorry for requesting it!
I wouldn't know how to proceed with this issue.
------------------------------------------------------------------------
[2021-05-11 06:28:36] krakjoe@php.net
I can't reproduce this either.
In addition, I see no possible path to a leak.
------------------------------------------------------------------------
[2021-05-10 16:56:04] gy dot dlcs at gmail dot com
I create a clean VM on Digitalocean, and reproduced it, this is the video and valgrind test result:
https://github.com/LuttyYang/php-bug-81027
------------------------------------------------------------------------
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=81027
--
Edit this bug report at https://bugs.php.net/bug.php?id=81027&edit=1