ID:               38962
 Updated by:       [EMAIL PROTECTED]
 Reported By:      jim-bo at hotpop dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         CGI related
 Operating System: Linux Debian Etch
 PHP Version:      5.1.6
 New Comment:

What you see is not a leak (a leak would be reported to you by the
memory manager), this how memory manager work.
No bug here.


Previous Comments:
------------------------------------------------------------------------

[2006-09-26 14:57:45] jim-bo at hotpop dot com

Description:
------------
Using cli on debian etch it seems that fgets leaks memory.

I have replaced fgets with stream_get_line and it seems to not leak.

Please forgive me if this is a programming error on my behalf...but i
can't see it.

PHP 5.1.6-1 (cli) (built: Sep  1 2006 13:52:26)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies


Reproduce code:
---------------
<?
$descriptorSpec = array(
                        0 => array("pipe", "r"),  // stdin is a pipe
that the child process will read from
                        1 => array("pipe", "w"),  // stdout is a pipe
that the child process will write to
                        2 => array("pipe", "w") // stderr is a pipe
that the child process will write to
        );

for ($i=0;$i<20;++$i)
{
        $process = proc_open('/usr/bin/uptime', $descriptorSpec,
$pipes);
        if (is_resource($process))
        {
                fclose($pipes[0]);
                while(!feof($pipes[1]))
                      $stdout .= fgets($pipes[1], 1024);

                fclose($pipes[1]);
                fclose($pipes[2]);
        }
        $returnValue = proc_close($process);
        unset($returnValue, $stdout, $stderr, $process, $pipes[0],
$pipes[1], $pipes[2]);
        print $i . ' ==> ' . memory_get_usage() . "\r\n";
}
?>


Expected result:
----------------
0 ==> 41344
1 ==> 41408
2 ==> 41408
3 ==> 41408
4 ==> 41408
5 ==> 41408
6 ==> 41408
7 ==> 41408
8 ==> 41408
9 ==> 41408
10 ==> 41408
11 ==> 41408
12 ==> 41408
13 ==> 41408
14 ==> 41408
15 ==> 41408
16 ==> 41408
17 ==> 41408
18 ==> 41408
19 ==> 41408


(this is the actual result when replacing fgets with stream_get_line)

Actual result:
--------------
0 ==> 41240
1 ==> 41368
2 ==> 41432
3 ==> 41496
4 ==> 41560
5 ==> 41624
6 ==> 41688
7 ==> 41752
8 ==> 41816
9 ==> 41880
10 ==> 41944
11 ==> 42008
12 ==> 42072
13 ==> 42136
14 ==> 42200
15 ==> 42264
16 ==> 42328
17 ==> 42392
18 ==> 42456
19 ==> 42520



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=38962&edit=1

Reply via email to