Skip to content

PHP crash on animated GIF upload #223

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions