Bug #77998 [NEW]: Memory leak in phpdbg_start_oplog

From: Date: Fri, 10 May 2019 06:58:47 +0000
Subject: Bug #77998 [NEW]: Memory leak in phpdbg_start_oplog
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-220807@lists.php.net to get a copy of this message
From:             andrew at nicols dot co dot uk
Operating system: MacOS. Also Offical docker image
PHP version:      7.3.5
Package:          phpdbg
Bug Type:         Bug
Bug description:Memory leak in phpdbg_start_oplog

Description:
------------
Once phpdbg_start_oplog() has been called memory usage increases as data
is generated, whether or not it is assigned to a variable and garbage
collection does not improve this.

The below test script demonstrates how the memory usage can grow in a
short space of time. The memory increases just from the increment of $i,
even if you remove the str_repeat.

On a large project, this causes the memory usage to grow as phpunit is
run when generating coverage reports, until hitting the memory limit.


Test script:
---------------
<?php

function get_something($repeats) {
    for ($i = 0; $i < $repeats; $i++) {
        // Generate a 1MB string.
        str_repeat(rand(1, 10), 1 * 1024 * 1024);
    }
}

function print_memory_usage() {
    static $memory = null;
    if (null === $memory) {
        $memory = memory_get_usage();
    }
    printf("Memory is at %d bytes\n", memory_get_usage() - $memory);
}

function run($repeats) {
    print_memory_usage();
    for ($i = 0; $i < $repeats; $i++) {
        get_something($repeats);
        print_memory_usage();
    }

    print_memory_usage();
    gc_collect_cycles();
    print_memory_usage();
}

$repeats = 50;

echo "Running without phpdbg_start_oplog:\n";
run($repeats);

echo "Running with phpdbg_start_oplog:\n";
\phpdbg_start_oplog();
run($repeats);

Expected result:
----------------
2005 sm:master> phpdbg -qrr test.php
Running without phpdbg_start_oplog:
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Running with phpdbg_start_oplog:
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes

Actual result:
--------------
2005 sm:master> phpdbg -qrr test.php
Running without phpdbg_start_oplog:
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Memory is at 0 bytes
Running with phpdbg_start_oplog:
Memory is at 65552 bytes
Memory is at 65552 bytes
Memory is at 65552 bytes
Memory is at 131088 bytes
Memory is at 131088 bytes
Memory is at 196624 bytes
Memory is at 196624 bytes
Memory is at 196624 bytes
Memory is at 262160 bytes
Memory is at 262160 bytes
Memory is at 327696 bytes
Memory is at 327696 bytes
Memory is at 393232 bytes
Memory is at 393232 bytes
Memory is at 393232 bytes
Memory is at 458768 bytes
Memory is at 458768 bytes
Memory is at 524304 bytes
Memory is at 524304 bytes
Memory is at 524304 bytes
Memory is at 589840 bytes
Memory is at 589840 bytes
Memory is at 655376 bytes
Memory is at 655376 bytes
Memory is at 720912 bytes
Memory is at 720912 bytes
Memory is at 720912 bytes
Memory is at 786448 bytes
Memory is at 786448 bytes
Memory is at 851984 bytes
Memory is at 851984 bytes
Memory is at 917520 bytes
Memory is at 917520 bytes
Memory is at 917520 bytes
Memory is at 983056 bytes
Memory is at 983056 bytes
Memory is at 1048592 bytes
Memory is at 1048592 bytes
Memory is at 1048592 bytes
Memory is at 1114128 bytes
Memory is at 1114128 bytes
Memory is at 1179664 bytes
Memory is at 1179664 bytes
Memory is at 1245200 bytes
Memory is at 1245200 bytes
Memory is at 1245200 bytes
Memory is at 1310736 bytes
Memory is at 1310736 bytes
Memory is at 1376272 bytes
Memory is at 1376272 bytes
Memory is at 1376272 bytes
Memory is at 1376272 bytes
Memory is at 1376272 bytes

-- 
Edit bug report at https://bugs.php.net/bug.php?id=77998&edit=1
-- 
Try a snapshot (PHP 5.4):   https://bugs.php.net/fix.php?id=77998&r=trysnapshot54
Try a snapshot (PHP 5.5):   https://bugs.php.net/fix.php?id=77998&r=trysnapshot55
Try a snapshot (trunk):     https://bugs.php.net/fix.php?id=77998&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=77998&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=77998&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=77998&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=77998&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=77998&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=77998&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=77998&r=notwrong
Not enough info:            https://bugs.php.net/fix.php?id=77998&r=notenoughinfo
Submitted twice:            https://bugs.php.net/fix.php?id=77998&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=77998&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=77998&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=77998&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=77998&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=77998&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=77998&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=77998&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=77998&r=mysqlcfg



Thread (3 messages)

« previous php.bugs (#220807) next »