php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #33127 fsockopen memory leak
Submitted: 2005-05-24 16:43 UTC Modified: 2005-05-25 11:25 UTC
From: joropito at ciudad dot com dot ar Assigned:
Status: Not a bug Package: Sockets related
PHP Version: 5.0.4 OS: FreeBSD 5.3/4
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: joropito at ciudad dot com dot ar
New email:
PHP Version: OS:

 

 [2005-05-24 16:43 UTC] joropito at ciudad dot com dot ar
Description:
------------
I see that fsockopen() causes a memory leak although of closing filedescriptor.

Reproduce code:
---------------
  system("/bin/ps -maxwvj -p ".posix_getpid());
  $fd = fsockopen("www.yahoo.com", 80, $errno, $errstr, 3);
  system("/bin/ps -maxwvj -p ".posix_getpid());
  if($fd) {
    $out = "GET / HTTP/1.1\nHost: www.yahoo.comConnection: Close\n\n";
    fwrite($fd, $out);
    $line = "";
    while (!feof ($fd)) {
      $lastline = fgets($fd);
      $line .= $lastline;
      if(ereg("Content-Type: text/html", $lastline)) { break; }
    }
    fclose($fd);
    echo $line;
  }
  system("/bin/ps -maxwvj -p ".posix_getpid());
  sleep(5);



Expected result:
----------------
You will see after issue fsockopen() memory usage rises, and if you issue fclose() does not free memory.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-05-24 16:50 UTC] joropito at ciudad dot com dot ar
Reproducible under php-4.3.9

Smaller reproducible code

<?php
  system("/bin/ps -l -p ".posix_getpid());
  $fd = fsockopen("www.yahoo.com", 80, $errno, $errstr, 3);
  system("/bin/ps -l -p ".posix_getpid());
  if($fd) fclose($fd);
  system("/bin/ps -l -p ".posix_getpid());
?>
 [2005-05-24 18:10 UTC] joropito at ciudad dot com dot ar
It's related to any network interaction.
Reproducible with
mysql_connect
file_get_contents (http wrapper)
fsockopen
 [2005-05-24 22:27 UTC] wez@php.net
How are you measuring this?
 [2005-05-25 00:56 UTC] joropito at ciudad dot com dot ar
This example code show initial and final memory usage. I'm wrong? It doesnt free all resources.
My cli application makes an infitite loop, and every time it tries to use network resources, memory usage increases and after some time no more memory available.

<?php
echo memory_get_usage()."\n";
$db = mysql_connect("dbhost", "dbuser", "dbpass");
mysql_close($db);
unset($db)
echo memory_get_usage()."\n";
?>
 [2005-05-25 11:25 UTC] sniper@php.net
Yes, this is just how resources in PHP works. No bug here.

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri May 10 23:01:30 2024 UTC