Bug #69109 [Opn->Dup]: Unable to create any stream after reaching PHP_INT_MAX number of resources

From: Date: Tue, 16 Feb 2021 14:21:42 +0000
Subject: Bug #69109 [Opn->Dup]: Unable to create any stream after reaching PHP_INT_MAX number of resources
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232199@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=69109&edit=1

 ID:                 69109
 Updated by:         cmb@php.net
 Reported by:        grzegorz129 at gmail dot com
 Summary:            Unable to create any stream after reaching
                     PHP_INT_MAX number of resources
-Status:             Open
+Status:             Duplicate
 Type:               Bug
 Package:            Streams related
 Operating System:   Linux
 PHP Version:        5.6.6
-Assigned To:        
+Assigned To:        cmb
 Block user comment: N
 Private report:     N

 New Comment:

This ticket is actually a duplicate of bug #67845.


Previous Comments:
------------------------------------------------------------------------
[2020-03-19 12:38:35] cmb@php.net

The proper solution for this issue is to replace the still
exisiting resources with objects.

------------------------------------------------------------------------
[2015-02-23 22:40:23] grzegorz129 at gmail dot com

Related To: Bug #69056

------------------------------------------------------------------------
[2015-02-23 17:02:57] grzegorz129 at gmail dot com

Description:
------------
PHP assigns unique number for every resource created. Number are unique for application lifetime
(they aren't reused even after resource is gone).
After creating around 2147483647 resources without terminating application, every function returning
stream or maybe even resource (tested on fopen() & stream_socket_accept() w/ TCP server) stops
working and begins returning "resource(2147483647) of type (Unknown)".

Due to test duration (2h using fopen() and 30h using TCP sockets) it was performed on 32-bit Linux
(Debian Jessie) only. It probably affects 64-bit as well as other OSs.

Test script:
---------------
<?php
/* Tested under x86 CLI, configuration:
--disable-cgi --without-kerberos --disable-bcmath --with-bz2=/usr --disable-calendar --without-curl
--disable-dba --disable-exif --disable-ftp --without-gd --without-gettext --without-gmp
--without-iconv --without-imap --without-ldap --without-mcrypt --without-mssql --without-mysql
--without-mysqli --without-adabas --without-ibm-db2 --without-iodbc --disable-pcntl --disable-pdo
--without-pgsql --without-libedit --without-readline --disable-soap --without-xmlrpc
--without-openssl --without-zlib --disable-ctype --disable-xml --disable-filter --disable-json
--disable-dom --disable-libxml --disable-mbstring --disable-mbregex --disable-simplexml
--disable-hash --without-bz2 --disable-all --without-pear --enable-cli --enable-sockets
--enable-debug
*/
while(true) {
 $clt = fopen("/dev/null", "w"); //Also tested with
stream_socket_accept($server)

 $cltInt = (int)$clt;
 var_dump($clt, $cltInt);

 fclose($clt);
}


Actual result:
--------------
resource(5) of type (stream)
int(5)

(...)

resource(2147483647) of type (Unknown)
int(2147483647)
Warning: fclose(): 2147483647 is not a valid stream resource in /root/stream_bug.php on line 11


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



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


Thread (3 messages)

« previous php.bugs (#232199) next »