Actions
Bug #93279
closedErrorHandler is registered before it has actually been fully configured (missing dependencies)
Status:
Closed
Priority:
Should have
Assignee:
-
Category:
System/Bootstrap/Configuration
Target version:
Start date:
2021-01-12
Due date:
% Done:
100%
Estimated time:
TYPO3 Version:
11
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:
Description
The core ErrorHandler registeres the error handler in construct.
Now, because it implements LoggerAwareInterface, GeneralUtility::makeInstance will try to create a logger after the object (ErrorHandler) has been constructed. That means the error handler is active, while the logger is being created.
Now, when an exception during logger creation happens, the incomplete ErrorHandler is invoked.
This then causes an exception like:
Exception initially reported on Slack by Franz Holzinger with TYPO3 v9.5.24: https://typo3.slack.com/archives/C025BQLFA/p1610482539284400
( ! ) Fatal error: Uncaught TYPO3\CMS\Core\Cache\Exception\NoSuchCacheException: A cache with identifier "assets" does not exist. in /[…]/htdocs/typo3/sysext/core/Classes/Cache/CacheManager.php on line 138 ( ! ) TYPO3\CMS\Core\Cache\Exception\NoSuchCacheException: A cache with identifier "assets" does not exist. in /[…]/htdocs/typo3/sysext/core/Classes/Cache/CacheManager.php on line 138 Call Stack # Time Memory Function Location 1 0.0000 397120 {main}( ) .../htdocs/index.php:0 2 0.0001 397440 {closure:/[…]/index.php:21-25}( ) .../index.php:25 3 0.0019 516832 TYPO3\CMS\Core\Core\Bootstrap::init( ) .../index.php:24 4 0.0029 648224 TYPO3\CMS\Core\Core\Bootstrap::initializeErrorHandling( ) .../Bootstrap.php:105 5 0.0029 648224 TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance( ) .../Bootstrap.php:705 6 0.0031 651184 TYPO3\CMS\Core\Log\LogManager->getLogger( ) .../GeneralUtility.php:3695 7 0.0031 651376 TYPO3\CMS\Core\Log\LogManager->setWritersForLogger( ) .../LogManager.php:103 8 0.0031 651752 TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance( ) .../LogManager.php:145 9 0.0033 654248 TYPO3\CMS\Core\Log\Writer\FileWriter->__construct( ) .../GeneralUtility.php:3689 10 0.0033 654376 TYPO3\CMS\Core\Log\Writer\FileWriter->setLogFile( ) .../FileWriter.php:82 11 0.0033 654376 TYPO3\CMS\Core\Log\Writer\FileWriter->openLogFile( ) .../FileWriter.php:123 12 0.0034 654752 fopen ( ) .../FileWriter.php:194 13 0.0034 656024 TYPO3\CMS\Core\Error\ErrorHandler->handleError( ) .../FileWriter.php:194 14 0.0035 666992 TYPO3\CMS\Core\TimeTracker\TimeTracker->setTSlogMessage( ) .../ErrorHandler.php:156 15 0.0036 667048 TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance( ) .../TimeTracker.php:219 16 0.0036 668224 TYPO3\CMS\Core\Imaging\IconFactory->__construct( ) .../GeneralUtility.php:3689 17 0.0036 668224 TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance( ) .../IconFactory.php:65 18 0.0036 670704 TYPO3\CMS\Core\Imaging\IconRegistry->__construct( ) .../GeneralUtility.php:3689 19 0.0036 670704 TYPO3\CMS\Core\Imaging\IconRegistry->initialize( ) .../IconRegistry.php:494 20 0.0037 670704 TYPO3\CMS\Core\Imaging\IconRegistry->getCachedBackendIcons( ) .../IconRegistry.php:514 21 0.0037 737544 TYPO3\CMS\Core\Cache\CacheManager->getCache( ) .../IconRegistry.php:540
The exception can be reproduced with an invalid logger configuration like:
$GLOBALS['TYPO3_CONF_VARS']['LOG'] = [
'writerConfiguration' => [
\TYPO3\CMS\Core\Log\LogLevel::DEBUG => null,
\TYPO3\CMS\Core\Log\LogLevel::WARNING => [
\TYPO3\CMS\Core\Log\Writer\SyslogWriter::class => [],
]
]
];
Actions