php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #61019 Out of memory on command stream_get_contents
Submitted: 2012-02-08 22:52 UTC Modified: -
Votes:12
Avg. Score:5.0 ± 0.0
Reproduced:12 of 12 (100.0%)
Same Version:12 (100.0%)
Same OS:11 (91.7%)
From: sachse at gmx dot net Assigned:
Status: Closed Package: Streams related
PHP Version: 5.3.10 OS: Linux testsystem1 3.0
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: sachse at gmx dot net
New email:
PHP Version: OS:

 

 [2012-02-08 22:52 UTC] sachse at gmx dot net
Description:
------------
Very seldom the script works but in most cases it crashes.
Segmentation fault were also seen.
ini_set("memory_limit", "4g"); - does also not help

1st run = OK
All further runs crashes.



Test script:
---------------
<?php
  $descriptorspec = array(0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
             	 					  1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
             						  2 => array("pipe", "w")   // stderr is a pipe that the child will write to
                         );
                         
  $process=proc_open("echo testtext",$descriptorspec,$pipes);
  if(is_resource($process))
  {
    stream_set_blocking($pipes[0],false);
    stream_set_blocking($pipes[1],false);
    stream_set_blocking($pipes[2],false);
  	stream_set_write_buffer($pipes[0],0);
  	stream_set_read_buffer($pipes[1],0);
   	stream_set_read_buffer($pipes[2],0);
   	$stdin_stream="";
   	$stderr_stream="";

    echo "External command executed\n";   	
    do                                     	
    {
  	  $process_state=proc_get_status($process);
 	    $tmp_stdin=stream_get_contents($pipes[1]);   	
   	  if($tmp_stdin) 
  	  {
    	 $stdin_stream=$stdin_stream.$tmp_stdin;
    	}
    	$tmp_stderr=stream_get_contents($pipes[2]);
    	if($tmp_stderr) 
    	{
     	  $stderr_stream=$stderr_stream.$tmp_stderr;
     	}
  	  sleep(1);
  	}while($process_state['running']);

    echo "External command exit: ".$process_state['exitcode']."\n";
    
    //read outstanding data
    $tmp_stdin=stream_get_contents($pipes[1]);   	
 	  if($tmp_stdin) 
	  {
  	 $stdin_stream=$stdin_stream.$tmp_stdin;
  	}
  	$tmp_stderr=stream_get_contents($pipes[2]);
  	if($tmp_stderr) 
  	{
   	  $stderr_stream=$stderr_stream.$tmp_stderr;
   	}

    fclose ($pipes[0]);
    fclose ($pipes[1]);
    fclose ($pipes[2]);
  
    proc_close($process);    
   	
   	echo "STDOUT: ".$stdin_stream."\n";
   	echo "STDERR: ".$stderr_stream."\n";
  }
  else
  {
    echo "Can't start external command\n";
  }                         
?>


Expected result:
----------------
External command executed
External command exit: 0
STDOUT: testtext

STDERR: 

Actual result:
--------------
External command executed
PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 133431296 bytes) in /var/www/localhost/htdocs/jobmanager/runcmd.php on line 23

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 133431296 bytes) in /var/www/localhost/htdocs/jobmanager/runcmd.php on line 23

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2014-04-02 13:39 UTC] mike@php.net
Automatic comment on behalf of mike
Revision: http://git.php.net/?p=php-src.git;a=commit;h=1ec83d44a1601c3560f430e08af9698bf8fb075c
Log: Fixed bug #61019 (Out of memory on command stream_get_contents)
 [2014-04-02 13:39 UTC] mike@php.net
-Status: Open +Status: Closed
 [2014-04-03 08:02 UTC] ab@php.net
Automatic comment on behalf of mike
Revision: http://git.php.net/?p=php-src.git;a=commit;h=1ec83d44a1601c3560f430e08af9698bf8fb075c
Log: Fixed bug #61019 (Out of memory on command stream_get_contents)
 [2014-04-03 08:04 UTC] ab@php.net
Automatic comment on behalf of mike
Revision: http://git.php.net/?p=php-src.git;a=commit;h=1ec83d44a1601c3560f430e08af9698bf8fb075c
Log: Fixed bug #61019 (Out of memory on command stream_get_contents)
 [2014-04-10 04:47 UTC] tyrael@php.net
Automatic comment on behalf of mike
Revision: http://git.php.net/?p=php-src.git;a=commit;h=1ec83d44a1601c3560f430e08af9698bf8fb075c
Log: Fixed bug #61019 (Out of memory on command stream_get_contents)
 [2014-10-07 23:15 UTC] stas@php.net
Automatic comment on behalf of mike
Revision: http://git.php.net/?p=php-src-security.git;a=commit;h=1ec83d44a1601c3560f430e08af9698bf8fb075c
Log: Fixed bug #61019 (Out of memory on command stream_get_contents)
 [2014-10-07 23:26 UTC] stas@php.net
Automatic comment on behalf of mike
Revision: http://git.php.net/?p=php-src-security.git;a=commit;h=1ec83d44a1601c3560f430e08af9698bf8fb075c
Log: Fixed bug #61019 (Out of memory on command stream_get_contents)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 11:01:29 2024 UTC