Bug #81027 [Opn]: WeakReference will cause memory leaks

From: Date: Thu, 12 Aug 2021 10:14:51 +0000
Subject: Bug #81027 [Opn]: WeakReference will cause memory leaks
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-235783@lists.php.net to get a copy of this message
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


Thread (14 messages)

« previous php.bugs (#235783) next »