Skip to content

PHP crash on animated GIF upload #223

@Eric69-dev

Description

@Eric69-dev

Hello,

Describe the bug
I'm facing a php crash when uploading animated GIF files using Quantum Manager on Joomla 5.3.0

To Reproduce
Steps to reproduce the behavior:

  1. From Joomla backend go to files
  2. Browse to ../images/
  3. Drag'nDrop or select animated GIF files (one or more)
  4. Upload is done but Php crashes

Expected behavior
Php should not crash

System Information (please complete the following information):

  • Extensions version: 3.2.4
  • PHP version: 8.2.29
  • Server OS: Debian 6.1.153-1
  • Browser: Firefox lastest version

Additional context
Php logs show FastCGI Process manager error:
sept. 24 15:19:30 SERVER1 systemd[1]: Started php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager.
sept. 24 20:04:45 SERVER1 systemd[1]: php8.2-fpm.service: A process of this unit has been killed by the OOM killer.
sept. 24 20:04:45 SERVER1 systemd[1]: php8.2-fpm.service: Failed with result 'oom-kill'.
sept. 24 20:04:45 SERVER1 systemd[1]: php8.2-fpm.service: Consumed 7min 10.076s CPU time.

Done a test on a local Wampserver Joomla site. The php error logs shows memory allocation error on splitter.php:
[25-Sep-2025 11:22:32 UTC] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8192 bytes) in D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\gif\src\Splitter.php on line 162
[25-Sep-2025 11:22:32 UTC] PHP Stack trace:
[25-Sep-2025 11:22:32 UTC] PHP 1. {main}() D:\WWW\Joomla_522\administrator\index.php:0
[25-Sep-2025 11:22:32 UTC] PHP 2. require_once() D:\WWW\Joomla_522\administrator\index.php:32
[25-Sep-2025 11:22:32 UTC] PHP 3. Joomla\CMS\Application\CMSApplication->execute() D:\WWW\Joomla_522\administrator\includes\app.php:58
[25-Sep-2025 11:22:32 UTC] PHP 4. Joomla\CMS\Application\AdministratorApplication->doExecute() D:\WWW\Joomla_522\libraries\src\Application\CMSApplication.php:304
[25-Sep-2025 11:22:32 UTC] PHP 5. Joomla\CMS\Application\AdministratorApplication->dispatch($component = uninitialized) D:\WWW\Joomla_522\libraries\src\Application\AdministratorApplication.php:205
[25-Sep-2025 11:22:32 UTC] PHP 6. Joomla\CMS\Component\ComponentHelper::renderComponent($option = 'com_quantummanager', $params = uninitialized) D:\WWW\Joomla_522\libraries\src\Application\AdministratorApplication.php:150
[25-Sep-2025 11:22:32 UTC] PHP 7. Joomla\CMS\Dispatcher\ComponentDispatcher->dispatch() D:\WWW\Joomla_522\libraries\src\Component\ComponentHelper.php:361
[25-Sep-2025 11:22:32 UTC] PHP 8. Joomla\CMS\MVC\Controller\BaseController->execute($task = 'generatePreviewImage') D:\WWW\Joomla_522\libraries\src\Dispatcher\ComponentDispatcher.php:143
[25-Sep-2025 11:22:32 UTC] PHP 9. Joomla\Component\QuantumManager\Administrator\Controller\QuantumviewfilesController->generatePreviewImage() D:\WWW\Joomla_522\libraries\src\MVC\Controller\BaseController.php:730
[25-Sep-2025 11:22:32 UTC] PHP 10. Joomla\Component\QuantumManager\Administrator\Filesystem\LocalFilesystem::generatePreviewImage($path = 'root/images/test-gif', $scope = 'docs', $file = 'tuto-15.gif') D:\WWW\Joomla_522\administrator\components\com_quantummanager\src\Controller\QuantumviewfilesController.php:295
[25-Sep-2025 11:22:32 UTC] PHP 11. Intervention\Image\ImageManager->read($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-15.gif', $decoders = uninitialized) D:\WWW\Joomla_522\administrator\components\com_quantummanager\src\Filesystem\LocalFilesystem.php:1219
[25-Sep-2025 11:22:32 UTC] PHP 12. Intervention\Image\Drivers\AbstractDriver->handleInput($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-15.gif', $decoders = []) D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\ImageManager.php:87
[25-Sep-2025 11:22:32 UTC] PHP 13. Intervention\Image\InputHandler->handle($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-15.gif') D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\Drivers\AbstractDriver.php:56
[25-Sep-2025 11:22:32 UTC] PHP 14. Intervention\Image\Drivers\Gd\Decoders\FilePathImageDecoder->decode($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-15.gif') D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\InputHandler.php:97
[25-Sep-2025 11:22:32 UTC] PHP 15. Intervention\Image\Drivers\Gd\Decoders\NativeObjectDecoder->decodeGif($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-15.gif') D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\Drivers\Gd\Decoders\FilePathImageDecoder.php:33
[25-Sep-2025 11:22:32 UTC] PHP 16. Intervention\Gif\Splitter->coalesceToResources() D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\Drivers\Gd\Decoders\NativeObjectDecoder.php:92
[25-Sep-2025 11:22:32 UTC] PHP 17. Intervention\Gif\Splitter->toResources() D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\gif\src\Splitter.php:178
[25-Sep-2025 11:22:32 UTC] PHP 18. imagepalettetotruecolor($image = class GdImage { }) D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\gif\src\Splitter.php:162
[25-Sep-2025 11:22:38 UTC] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8192 bytes) in D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\gif\src\Splitter.php on line 162
[25-Sep-2025 11:22:38 UTC] PHP Stack trace:
[25-Sep-2025 11:22:38 UTC] PHP 1. {main}() D:\WWW\Joomla_522\administrator\index.php:0
[25-Sep-2025 11:22:38 UTC] PHP 2. require_once() D:\WWW\Joomla_522\administrator\index.php:32
[25-Sep-2025 11:22:38 UTC] PHP 3. Joomla\CMS\Application\CMSApplication->execute() D:\WWW\Joomla_522\administrator\includes\app.php:58
[25-Sep-2025 11:22:38 UTC] PHP 4. Joomla\CMS\Application\AdministratorApplication->doExecute() D:\WWW\Joomla_522\libraries\src\Application\CMSApplication.php:304
[25-Sep-2025 11:22:38 UTC] PHP 5. Joomla\CMS\Application\AdministratorApplication->dispatch($component = uninitialized) D:\WWW\Joomla_522\libraries\src\Application\AdministratorApplication.php:205
[25-Sep-2025 11:22:38 UTC] PHP 6. Joomla\CMS\Component\ComponentHelper::renderComponent($option = 'com_quantummanager', $params = uninitialized) D:\WWW\Joomla_522\libraries\src\Application\AdministratorApplication.php:150
[25-Sep-2025 11:22:38 UTC] PHP 7. Joomla\CMS\Dispatcher\ComponentDispatcher->dispatch() D:\WWW\Joomla_522\libraries\src\Component\ComponentHelper.php:361
[25-Sep-2025 11:22:38 UTC] PHP 8. Joomla\CMS\MVC\Controller\BaseController->execute($task = 'generatePreviewImage') D:\WWW\Joomla_522\libraries\src\Dispatcher\ComponentDispatcher.php:143
[25-Sep-2025 11:22:38 UTC] PHP 9. Joomla\Component\QuantumManager\Administrator\Controller\QuantumviewfilesController->generatePreviewImage() D:\WWW\Joomla_522\libraries\src\MVC\Controller\BaseController.php:730
[25-Sep-2025 11:22:38 UTC] PHP 10. Joomla\Component\QuantumManager\Administrator\Filesystem\LocalFilesystem::generatePreviewImage($path = 'root/images/test-gif', $scope = 'docs', $file = 'tuto-64.gif') D:\WWW\Joomla_522\administrator\components\com_quantummanager\src\Controller\QuantumviewfilesController.php:295
[25-Sep-2025 11:22:38 UTC] PHP 11. Intervention\Image\ImageManager->read($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-64.gif', $decoders = uninitialized) D:\WWW\Joomla_522\administrator\components\com_quantummanager\src\Filesystem\LocalFilesystem.php:1219
[25-Sep-2025 11:22:38 UTC] PHP 12. Intervention\Image\Drivers\AbstractDriver->handleInput($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-64.gif', $decoders = []) D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\ImageManager.php:87
[25-Sep-2025 11:22:38 UTC] PHP 13. Intervention\Image\InputHandler->handle($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-64.gif') D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\Drivers\AbstractDriver.php:56
[25-Sep-2025 11:22:38 UTC] PHP 14. Intervention\Image\Drivers\Gd\Decoders\FilePathImageDecoder->decode($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-64.gif') D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\InputHandler.php:97
[25-Sep-2025 11:22:38 UTC] PHP 15. Intervention\Image\Drivers\Gd\Decoders\NativeObjectDecoder->decodeGif($input = 'D:\WWW\Joomla_522\images\test-gif\tuto-64.gif') D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\Drivers\Gd\Decoders\FilePathImageDecoder.php:33
[25-Sep-2025 11:22:38 UTC] PHP 16. Intervention\Gif\Splitter->coalesceToResources() D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\image\src\Drivers\Gd\Decoders\NativeObjectDecoder.php:92
[25-Sep-2025 11:22:38 UTC] PHP 17. Intervention\Gif\Splitter->toResources() D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\gif\src\Splitter.php:178
[25-Sep-2025 11:22:38 UTC] PHP 18. imagepalettetotruecolor($image = class GdImage { }) D:\WWW\Joomla_522\libraries\jinterventionimage\libraries\vendor\intervention\gif\src\Splitter.php:162

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions