Page MenuHomePhabricator

MWException: Invalid language code "[[:int:lang]]'"`UNIQ--item-261--QINU`"'"
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   MWException: Invalid language code "[[:int:lang]]'"`UNIQ--item-261--QINU`"'"
exception.trace
from /srv/mediawiki/php-1.39.0-wmf.12/includes/language/LanguageFactory.php(148)
#0 /srv/mediawiki/php-1.39.0-wmf.12/includes/language/LanguageFactory.php(134): MediaWiki\Languages\LanguageFactory->newFromCode(string)
#1 /srv/mediawiki/php-1.39.0-wmf.12/includes/libs/MapCacheLRU.php(274): MediaWiki\Languages\LanguageFactory->MediaWiki\Languages\{closure}()
#2 /srv/mediawiki/php-1.39.0-wmf.12/includes/language/LanguageFactory.php(135): MapCacheLRU->getWithSetCallback(string, Closure)
#3 /srv/mediawiki/php-1.39.0-wmf.12/includes/language/Language.php(285): MediaWiki\Languages\LanguageFactory->getLanguage(string)
#4 /srv/mediawiki/php-1.39.0-wmf.12/extensions/JsonConfig/includes/JCLuaLibrary.php(45): Language::factory(string)
#5 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaSandbox/LuaSandboxCallback.php(26): JsonConfig\JCLuaLibrary->get(string, string)
#6 [internal function]: Scribunto_LuaSandboxCallback->__call(string, array)
#7 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaSandbox/LuaSandboxInterpreter.php(115): LuaSandboxFunction->call(LuaSandboxFunction)
#8 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaCommon/LuaEngine.php(301): Scribunto_LuaSandboxInterpreter->callFunction(LuaSandboxFunction, LuaSandboxFunction)
#9 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaCommon/LuaModule.php(71): Scribunto_LuaEngine->executeFunctionChunk(LuaSandboxFunction, PPTemplateFrame_Hash)
#10 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/Hooks.php(146): Scribunto_LuaModule->invoke(string, PPTemplateFrame_Hash)
#11 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parser.php(3453): MediaWiki\Extension\Scribunto\Hooks::invokeHook(Parser, PPTemplateFrame_Hash, array)
#12 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parser.php(3136): Parser->callParserFunction(PPTemplateFrame_Hash, string, array)
#13 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/PPFrame_Hash.php(276): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#14 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parser.php(3327): PPFrame_Hash->expand(PPNode_Hash_Tree)
#15 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/PPFrame_Hash.php(276): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#16 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parser.php(3327): PPFrame_Hash->expand(PPNode_Hash_Tree)
#17 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/PPFrame_Hash.php(276): Parser->braceSubstitution(array, PPFrame_Hash)
#18 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/PPTemplateFrame_Hash.php(178): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#19 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/PPTemplateFrame_Hash.php(190): PPTemplateFrame_Hash->getNamedArgument(string)
#20 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/PPTemplateFrame_Hash.php(121): PPTemplateFrame_Hash->getArgument(string)
#21 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaCommon/LuaEngine.php(701): PPTemplateFrame_Hash->getArguments()
#22 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaSandbox/LuaSandboxCallback.php(26): Scribunto_LuaEngine->getAllExpandedArguments(string)
#23 [internal function]: Scribunto_LuaSandboxCallback->__call(string, array)
#24 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaSandbox/LuaSandboxInterpreter.php(115): LuaSandboxFunction->call(LuaSandboxFunction)
#25 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaCommon/LuaEngine.php(301): Scribunto_LuaSandboxInterpreter->callFunction(LuaSandboxFunction, LuaSandboxFunction)
#26 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/engines/LuaCommon/LuaModule.php(71): Scribunto_LuaEngine->executeFunctionChunk(LuaSandboxFunction, PPTemplateFrame_Hash)
#27 /srv/mediawiki/php-1.39.0-wmf.12/extensions/Scribunto/includes/Hooks.php(146): Scribunto_LuaModule->invoke(string, PPTemplateFrame_Hash)
#28 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parser.php(3453): MediaWiki\Extension\Scribunto\Hooks::invokeHook(Parser, PPTemplateFrame_Hash, array)
#29 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parser.php(3136): Parser->callParserFunction(PPTemplateFrame_Hash, string, array)
#30 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/PPFrame_Hash.php(276): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#31 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parser.php(3327): PPFrame_Hash->expand(PPNode_Hash_Tree)
#32 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/PPFrame_Hash.php(276): Parser->braceSubstitution(array, PPFrame_Hash)
#33 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parser.php(2971): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#34 /srv/mediawiki/php-1.39.0-wmf.12/includes/parser/Parsoid/Config/DataAccess.php(377): Parser->replaceVariables(string, PPFrame_Hash)
#35 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wikitext/Wikitext.php(43): MediaWiki\Parser\Parsoid\Config\DataAccess->preprocessWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, ParserOutput, string)
#36 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1054): Wikimedia\Parsoid\Wikitext\Wikitext::preprocess(Wikimedia\Parsoid\Config\Env, string)
#37 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1097): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->expandTemplate(Wikimedia\Parsoid\Wt2Html\TT\TemplateEncapsulator)
#38 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1142): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTemplate(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#39 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php(150): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTag(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#40 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(132): Wikimedia\Parsoid\Wt2Html\TT\TokenHandler->process(array)
#41 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(195): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunk(array)
#42 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(193): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunkily(string, array)
#43 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/TreeBuilder/TreeBuilderStage.php(487): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunkily(string, array)
#44 [internal function]: Wikimedia\Parsoid\Wt2Html\TreeBuilder\TreeBuilderStage->processChunkily(string, array)
#45 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(903): Generator->current()
#46 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(180): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily(string, array)
#47 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(308): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#48 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php(123): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#49 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Parsoid.php(172): Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI)
#50 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/src/Parsoid.php(210): Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, ParserOutput, array)
#51 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/extension/src/Rest/Handler/ParsoidHandler.php(585): Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, NULL, ParserOutput)
#52 /srv/mediawiki/php-1.39.0-wmf.12/vendor/wikimedia/parsoid/extension/src/Rest/Handler/PageHandler.php(88): MWParsoid\Rest\Handler\ParsoidHandler->wt2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array)
#53 /srv/mediawiki/php-1.39.0-wmf.12/includes/Rest/Router.php(412): MWParsoid\Rest\Handler\PageHandler->execute()
#54 /srv/mediawiki/php-1.39.0-wmf.12/includes/Rest/Router.php(336): MediaWiki\Rest\Router->executeHandler(MWParsoid\Rest\Handler\PageHandler)
#55 /srv/mediawiki/php-1.39.0-wmf.12/includes/Rest/EntryPoint.php(167): MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#56 /srv/mediawiki/php-1.39.0-wmf.12/includes/Rest/EntryPoint.php(132): MediaWiki\Rest\EntryPoint->execute()
#57 /srv/mediawiki/php-1.39.0-wmf.12/rest.php(31): MediaWiki\Rest\EntryPoint::main()
#58 /srv/mediawiki/w/rest.php(3): require(string)
#59 {main}
Impact

Cannot read the page.

Notes

Slightly different error when using action=view instead of RESTbase, but same problem.

This is seemingly user input error (can't find language code), but that shouldn't trigger a fatal error.

Details

Request URL
https://commons.wikimedia.org/w/rest.php/commons.wikimedia.org/v3/page/pagebundle/Commons%3AMuseum_f%C3%BCr_Hamburgische_Geschichte%2FMetadata/94840645

Event Timeline

This is seemingly user input error (can't find language code), but that shouldn't trigger a fatal error.

I haven’t checked where exactly the errors come from, but this is easy enough to trigger intentionally, at least:

mw.ext.data.get('', '"')

You can try that in a Lua console when editing a module page, without saving anything. IMHO this is a JsonConfig bug, JCLuaLibrary::get() either needs to validate the $langCode or catch this error.

Change 803951 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/JsonConfig@master] Catch MWException of Language::factory()

https://gerrit.wikimedia.org/r/803951

Change 803951 merged by jenkins-bot:

[mediawiki/extensions/JsonConfig@master] Catch MWException of Language::factory()

https://gerrit.wikimedia.org/r/803951

Let’s see if the error goes away with next week’s train. (I don’t think this is worth a backport, it only happens about once per hour.)