[php-src] Issue #12155: PHP 8.2 FPM Leaks processes on pcntl_fork

From: Date: Fri, 08 Sep 2023 14:28:22 +0000
Subject: [php-src] Issue #12155: PHP 8.2 FPM Leaks processes on pcntl_fork
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-245365@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/12155 Author: Xmister ### Description OS: xenial PHP tested: 8.2.7, 8.2.10 The following drupal 10 index.php: ```php <?php /** * @file * The PHP page that serves all page requests on a Drupal installation. * * All Drupal code is released under the GNU General Public License. * See COPYRIGHT.txt and LICENSE.txt files in the "core" directory. */ use Drupal\Core\DrupalKernel; use Symfony\Component\HttpFoundation\Request; $autoloader = require_once 'autoload.php'; $kernel = new DrupalKernel('prod', $autoloader); $request = Request::createFromGlobals(); $response = $kernel->handle($request); $response->send(); $pid = pcntl_fork(); if ( $pid !== 0 ) { // we are the parent process return; } sleep(10); $kernel->terminate($request, $response); ``` After doing ~5 requests to the site, results in the following sub-processes to the FPM master: ``` root 15873 0.0 0.8 464188 17200 ? Ss 13:08 0:00 php-fpm: master process (/var/www/site-fpm/drush12test.prod/php-fpm-8.2.conf) drush12+ 16518 0.7 1.4 466300 29860 ? S 13:11 0:00 \_ php-fpm: pool drush12test drush12+ 16557 0.0 0.6 466300 13068 ? S 13:11 0:00 \_ php-fpm: pool drush12test drush12+ 16559 0.0 0.6 466300 12640 ? S 13:11 0:00 \_ php-fpm: pool drush12test drush12+ 16561 0.0 0.6 466300 12640 ? S 13:11 0:00 \_ php-fpm: pool drush12test drush12+ 16563 0.0 0.6 466300 12640 ? S 13:11 0:00 \_ php-fpm: pool drush12test ``` But then after a few seconds, when it should clean them up, they will instead detach and linger around: ``` root 15873 0.0 0.8 464188 17188 ? Ss 13:08 0:00 php-fpm: master process (/var/www/site-fpm/drush12test.prod/php-fpm-8.2.conf) drush12+ 16557 0.0 1.1 464252 23364 ? S 13:11 0:00 php-fpm: pool drush12test drush12+ 16559 0.0 1.1 464252 23028 ? S 13:11 0:00 php-fpm: pool drush12test drush12+ 16561 0.0 1.1 464252 23028 ? S 13:11 0:00 php-fpm: pool drush12test drush12+ 16563 0.0 1.1 466300 23432 ? S 13:11 0:00 php-fpm: pool drush12test ``` The same doesn't happen with PHP 7.4. In that case the processes get cleaned up properly. ### PHP Version PHP 8.2.10 ### Operating System Ubuntu 16.04

« previous php.bugs (#245365) next »