[php-src] Issue #15145: Opcache: undefined variable $i

From: Date: Sun, 28 Jul 2024 21:26:45 +0000
Subject: [php-src] Issue #15145: Opcache: undefined variable $i
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-247390@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/15145 Author: lifeofguenter ### Description The following code: ```php <?php for ($i = 4; $i > 0; --$i) { if ($i > $position) { $matches[$i] = $pad; } elseif ($i === $position && $increment) { $matches[$i] += $increment; // If $matches[$i] was 0, carry the decrement if ($matches[$i] < 0) { $matches[$i] = $pad; --$position; // Return null on a carry overflow if ($i === 1) { return null; } } } } ``` (https://github.com/composer/semver/blob/3.4.0/src/VersionParser.php) Resulted in this output: ``` ErrorException: Uncaught ErrorException (500): Undefined variable $i in /app/vendor/composer/semver/src/VersionParser.php:541 ``` But I expected this output instead: ``` no error ``` Full stack trace: ``` #0 /app/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(255): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() #1 /app/vendor/composer/semver/src/VersionParser.php(541): Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}() #2 /app/vendor/composer/semver/src/VersionParser.php(410): Composer\Semver\VersionParser->manipulateVersionString() #3 /app/vendor/composer/semver/src/VersionParser.php(276): Composer\Semver\VersionParser->parseConstraint() #4 /app/vendor/composer/InstalledVersions.php(122): Composer\Semver\VersionParser->parseConstraints() #5 /app/vendor/maatwebsite/excel/src/Cache/CacheManager.php(43): Composer\InstalledVersions::satisfies() #6 /app/vendor/laravel/framework/src/Illuminate/Support/Manager.php(106): Maatwebsite\Excel\Cache\CacheManager->createMemoryDriver() #7 /app/vendor/laravel/framework/src/Illuminate/Support/Manager.php(80): Illuminate\Support\Manager->createDriver() #8 /app/vendor/maatwebsite/excel/src/SettingsProvider.php(31): Illuminate\Support\Manager->driver() #9 /app/vendor/maatwebsite/excel/src/SettingsProvider.php(25): Maatwebsite\Excel\SettingsProvider->configureCellCaching() #10 /app/vendor/maatwebsite/excel/src/ExcelServiceProvider.php(52): Maatwebsite\Excel\SettingsProvider->provide() #11 /app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1073): Maatwebsite\Excel\ExcelServiceProvider->Maatwebsite\Excel\{closure}() #12 /app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1016): Illuminate\Foundation\Application->fireAppCallbacks() #13 /app/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\Foundation\Application->boot() #14 /app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(263): Illuminate\Foundation\Bootstrap\BootProviders->bootstrap() #15 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(186): Illuminate\Foundation\Application->bootstrapWith() #16 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(170): Illuminate\Foundation\Http\Kernel->bootstrap() #17 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter() #18 /app/public/index.php(51): Illuminate\Foundation\Http\Kernel->handle() #19 {main} Next Symfony\Component\HttpKernel\Exception\HttpException: Undefined variable $i in /app/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php:646 Stack trace: #0 /app/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(556): Illuminate\Foundation\Exceptions\Handler->prepareResponse() #1 /app/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(473): Illuminate\Foundation\Exceptions\Handler->renderExceptionResponse() #2 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(509): Illuminate\Foundation\Exceptions\Handler->render() #3 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(148): Illuminate\Foundation\Http\Kernel->renderException() #4 /app/public/index.php(51): Illuminate\Foundation\Http\Kernel->handle() #5 {main} ``` It is impossible for this error to happen, but also it happens only intermittently with no re-deployment/code-changes. I suspect something with opcache, current config: ``` opcache.memory_consumption = 128 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 32531 opcache.validate_timestamps = Off opcache.jit = "function" opcache.jit_buffer_size = 128M ``` It seems to happen more often when vapor-core package is installed - despite not running on vapor. ### PHP Version PHP 8.2.21 + 8.3.9 ### Operating System Debian Bookworm

« previous php.bugs (#247390) next »