Topic on Project:Support desk

ServiceContainer.php: Recursive service instantiation: Circular dependency when creating service

5
Subfader (talkcontribs)

I upgraded from a very old version (25?) to 1.35.0 and get an internal error. I don't know what wikimedia services are but it sounds like I dodn't need it at all.

MediaWiki internal error.

Original exception: [3ae6162e9b487b54644fa2ee] /index.php?title=Main_Page Wikimedia\Services\RecursiveServiceDependencyException from line 437 of /vendor/wikimedia/services/src/ServiceContainer.php: Recursive service instantiation: Circular dependency when creating service! Parser -> Parser Backtrace:

  1. 0 /vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService(string)
  2. 1 /includes/MediaWikiServices.php(1000): Wikimedia\Services\ServiceContainer->getService(string)
  3. 2 /includes/Setup.php(794): MediaWiki\MediaWikiServices->getParser()
  4. 3 /vendor/wikimedia/object-factory/src/ObjectFactory.php(172): {closure}()
  5. 4 /includes/StubObject.php(128): Wikimedia\ObjectFactory::getObjectFromSpec(array)
  6. 5 /includes/DeprecatedGlobal.php(55): StubObject->_newObject()
  7. 6 /includes/StubObject.php(172): DeprecatedGlobal->_newObject()
  8. 7 /includes/StubObject.php(115): StubObject->_unstub(string, integer)
  9. 8 /includes/StubObject.php(142): StubObject->_call(string, array)
  10. 9 /LocalSettings.php(238): StubObject->__call(string, array)
  11. 10 /includes/HookContainer/HookContainer.php(320): wfbreakExtension(Parser)
  12. 11 /includes/HookContainer/HookContainer.php(131): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
  13. 12 /includes/HookContainer/HookRunner.php(2959): MediaWiki\HookContainer\HookContainer->run(string, array)
  14. 13 /includes/parser/Parser.php(532): MediaWiki\HookContainer\HookRunner->onParserFirstCallInit(Parser)
  15. 14 /includes/parser/Parser.php(477): Parser->firstCallInit()
  16. 15 /includes/parser/ParserFactory.php(142): Parser->__construct(MediaWiki\Config\ServiceOptions, MagicWordFactory, LanguageEn, ParserFactory, string, MediaWiki\SpecialPage\SpecialPageFactory, MediaWiki\Linker\LinkRendererFactory, NamespaceInfo, MediaWiki\Logger\LegacyLogger, MediaWiki\BadFileLookup, MediaWiki\Languages\LanguageConverterFactory, MediaWiki\HookContainer\HookContainer)
  17. 16 /includes/ServiceWiring.php(816): ParserFactory->create()
  18. 17 /vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}(MediaWiki\MediaWikiServices)
  19. 18 /vendor/wikimedia/services/src/ServiceContainer.php(416): Wikimedia\Services\ServiceContainer->createService(string)
  20. 19 /includes/MediaWikiServices.php(1000): Wikimedia\Services\ServiceContainer->getService(string)
  21. 20 /includes/content/WikitextContent.php(373): MediaWiki\MediaWikiServices->getParser()
  22. 21 /includes/content/AbstractContent.php(590): WikitextContent->fillParserOutput(Title, integer, ParserOptions, boolean, ParserOutput)
  23. 22 /includes/Revision/RenderedRevision.php(263): AbstractContent->getParserOutput(Title, integer, ParserOptions, boolean)
  24. 23 /includes/Revision/RenderedRevision.php(235): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(WikitextContent, boolean)
  25. 24 /includes/Revision/RevisionRenderer.php(215): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string)
  26. 25 /includes/Revision/RevisionRenderer.php(152): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, array)
  27. 26 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
  28. 27 /includes/Revision/RenderedRevision.php(197): call_user_func(Closure, MediaWiki\Revision\RenderedRevision, array)
  29. 28 /includes/poolcounter/PoolWorkArticleView.php(216): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
  30. 29 /includes/poolcounter/PoolCounterWork.php(162): PoolWorkArticleView->doWork()
  31. 30 /includes/page/Article.php(810): PoolCounterWork->execute()
  32. 31 /includes/actions/ViewAction.php(74): Article->view()
  33. 32 /includes/MediaWiki.php(527): ViewAction->show()
  34. 33 /includes/MediaWiki.php(313): MediaWiki->performAction(Article, Title)
  35. 34 /includes/MediaWiki.php(940): MediaWiki->performRequest()
  36. 35 /includes/MediaWiki.php(543): MediaWiki->main()
  37. 36 /index.php(53): MediaWiki->run()
  38. 37 /index.php(46): wfIndexMain()
  39. 38 {main}
Malyacko (talkcontribs)

@Subfader Why would you move to an outdated insecure ancient version (1.30) with known and public security vulnerabilities, instead of upgrading to a supported and secure version?

Subfader (talkcontribs)

Sorry, 1.35.0 ;)

Bawolff (talkcontribs)

whats the code/extension defining the wfbreakExtension() function and what hook is it using?

At a glance it looks like its calling $wgParser (which creates a new parser) while executing a Parser initialization hook, which is causing a loop. If the extension is being passed a Parser, it should use that instance instead of $wgParser.

Subfader (talkcontribs)

Thanks, it was a mini extension I had added directly in LocalSettings and didn't recognize.

Reply to "ServiceContainer.php: Recursive service instantiation: Circular dependency when creating service"