Page MenuHomePhabricator

TypeError: MediaWiki\Parser\Sanitizer::armorFrenchSpaces(): Return value must be of type string, null returned
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   TypeError: MediaWiki\Parser\Sanitizer::armorFrenchSpaces(): Return value must be of type string, null returned
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Sanitizer.php(833)
#0/srv/mediawiki/php-1.44.0-wmf.18/includes/tidy/RemexCompatFormatter.php(57)MediaWiki\Parser\Sanitizer::armorFrenchSpaces(string)
#1/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/Serializer/Serializer.php(163)MediaWiki\Tidy\RemexCompatFormatter->characters(Wikimedia\RemexHtml\Serializer\SerializerNode, string, int, int)
#2/srv/mediawiki/php-1.44.0-wmf.18/includes/tidy/RemexCompatMunger.php(209)Wikimedia\RemexHtml\Serializer\Serializer->characters(int, Wikimedia\RemexHtml\Serializer\SerializerNode, string, int, int, int, int)
#3/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/TreeBuilder/TreeBuilder.php(242)MediaWiki\Tidy\RemexCompatMunger->characters(int, Wikimedia\RemexHtml\TreeBuilder\Element, string, int, int, int, int)
#4/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/TreeBuilder/InBody.php(60)Wikimedia\RemexHtml\TreeBuilder\TreeBuilder->insertCharacters(string, int, int, int, int)
#5/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/TreeBuilder/InBody.php(65)Wikimedia\RemexHtml\TreeBuilder\InBody->Wikimedia\RemexHtml\TreeBuilder\{closure}(string, int, int, int, int)
#6/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/TreeBuilder/Dispatcher.php(398)Wikimedia\RemexHtml\TreeBuilder\InBody->characters(string, int, int, int, int)
#7/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/Tokenizer/Tokenizer.php(1115)Wikimedia\RemexHtml\TreeBuilder\Dispatcher->characters(string, int, int, int, int)
#8/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/Tokenizer/Tokenizer.php(548)Wikimedia\RemexHtml\Tokenizer\Tokenizer->emitDataRange(int, int, bool, bool)
#9/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/Tokenizer/Tokenizer.php(369)Wikimedia\RemexHtml\Tokenizer\Tokenizer->dataState(bool)
#10/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/remex-html/src/Tokenizer/Tokenizer.php(178)Wikimedia\RemexHtml\Tokenizer\Tokenizer->executeInternal(bool)
#11/srv/mediawiki/php-1.44.0-wmf.18/includes/tidy/RemexDriver.php(86)Wikimedia\RemexHtml\Tokenizer\Tokenizer->execute(array)
#12/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Parser.php(1743)MediaWiki\Tidy\RemexDriver->tidy(string, array)
#13/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Parser.php(704)MediaWiki\Parser\Parser->internalParseHalfParsed(string, bool, bool)
#14/srv/mediawiki/php-1.44.0-wmf.18/includes/content/WikitextContentHandler.php(384)MediaWiki\Parser\Parser->parse(string, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int)
#15/srv/mediawiki/php-1.44.0-wmf.18/includes/content/ContentHandler.php(1697)MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#16/srv/mediawiki/php-1.44.0-wmf.18/includes/content/Renderer/ContentRenderer.php(75)MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#17/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(261)MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Page\PageIdentityValue, MediaWiki\Revision\RevisionStoreRecord, MediaWiki\Parser\ParserOptions, array)
#18/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(233)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#19/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RevisionRenderer.php(236)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#20/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RevisionRenderer.php(169)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#21/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(196)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#22/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolWorkArticleView.php(106)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#23/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolWorkArticleViewOld.php(81)MediaWiki\PoolCounter\PoolWorkArticleView->renderRevision(null, bool, string)
#24/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolCounterWork.php(171)MediaWiki\PoolCounter\PoolWorkArticleViewOld->doWork()
#25/srv/mediawiki/php-1.44.0-wmf.18/includes/page/ParserOutputAccess.php(369)MediaWiki\PoolCounter\PoolCounterWork->execute()
#26/srv/mediawiki/php-1.44.0-wmf.18/includes/page/Article.php(830)MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, int)
#27/srv/mediawiki/php-1.44.0-wmf.18/includes/page/Article.php(546)Article->generateContentOutput(MediaWiki\User\User, MediaWiki\Parser\ParserOptions, int, MediaWiki\Output\OutputPage, array)
#28/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ViewAction.php(78)Article->view()
#29/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(732)ViewAction->show()
#30/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(509)MediaWiki\Actions\ActionEntryPoint->performAction(Article, MediaWiki\Title\Title)
#31/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(145)MediaWiki\Actions\ActionEntryPoint->performRequest()
#32/srv/mediawiki/php-1.44.0-wmf.18/includes/MediaWikiEntryPoint.php(202)MediaWiki\Actions\ActionEntryPoint->execute()
#33/srv/mediawiki/php-1.44.0-wmf.18/index.php(58)MediaWiki\MediaWikiEntryPoint->run()
#34/srv/mediawiki/w/index.php(3)require(string)
#35{main}
Impact
Notes

Details

Request URL
https://en.wikipedia.org/w/index.php?oldid=*&title=*

Event Timeline

This is probably another "bad data in the DB causes exceptions" GIGO task. I've been poking at T387188 recently and saw a few TypeErrors (for example T387188#10581449)

Error
normalized_message
[{reqId}] {exception_url}   TypeError: Return value of MediaWiki\Parser\Sanitizer::armorFrenchSpaces() must be of the type string, null returned
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.19/includes/parser/Sanitizer.php(833)
#0/srv/mediawiki/php-1.44.0-wmf.19/includes/tidy/RemexCompatFormatter.php(57)MediaWiki\Parser\Sanitizer::armorFrenchSpaces(string)
#1/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/Serializer/Serializer.php(163)MediaWiki\Tidy\RemexCompatFormatter->characters(Wikimedia\RemexHtml\Serializer\SerializerNode, string, int, int)
#2/srv/mediawiki/php-1.44.0-wmf.19/includes/tidy/RemexCompatMunger.php(209)Wikimedia\RemexHtml\Serializer\Serializer->characters(int, Wikimedia\RemexHtml\Serializer\SerializerNode, string, int, int, int, int)
#3/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/TreeBuilder/TreeBuilder.php(242)MediaWiki\Tidy\RemexCompatMunger->characters(int, Wikimedia\RemexHtml\TreeBuilder\Element, string, int, int, int, int)
#4/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/TreeBuilder/InBody.php(60)Wikimedia\RemexHtml\TreeBuilder\TreeBuilder->insertCharacters(string, int, int, int, int)
#5/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/TreeBuilder/InBody.php(65)Wikimedia\RemexHtml\TreeBuilder\InBody->Wikimedia\RemexHtml\TreeBuilder\{closure}(string, int, int, int, int)
#6/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/TreeBuilder/Dispatcher.php(398)Wikimedia\RemexHtml\TreeBuilder\InBody->characters(string, int, int, int, int)
#7/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/Tokenizer/Tokenizer.php(1115)Wikimedia\RemexHtml\TreeBuilder\Dispatcher->characters(string, int, int, int, int)
#8/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/Tokenizer/Tokenizer.php(548)Wikimedia\RemexHtml\Tokenizer\Tokenizer->emitDataRange(int, int, bool, bool)
#9/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/Tokenizer/Tokenizer.php(369)Wikimedia\RemexHtml\Tokenizer\Tokenizer->dataState(bool)
#10/srv/mediawiki/php-1.44.0-wmf.19/vendor/wikimedia/remex-html/src/Tokenizer/Tokenizer.php(178)Wikimedia\RemexHtml\Tokenizer\Tokenizer->executeInternal(bool)
#11/srv/mediawiki/php-1.44.0-wmf.19/includes/tidy/RemexDriver.php(86)Wikimedia\RemexHtml\Tokenizer\Tokenizer->execute(array)
#12/srv/mediawiki/php-1.44.0-wmf.19/includes/parser/Parser.php(1742)MediaWiki\Tidy\RemexDriver->tidy(string, array)
#13/srv/mediawiki/php-1.44.0-wmf.19/includes/parser/Parser.php(703)MediaWiki\Parser\Parser->internalParseHalfParsed(string, bool, bool)
#14/srv/mediawiki/php-1.44.0-wmf.19/includes/content/WikitextContentHandler.php(384)MediaWiki\Parser\Parser->parse(string, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int)
#15/srv/mediawiki/php-1.44.0-wmf.19/includes/content/ContentHandler.php(1697)MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#16/srv/mediawiki/php-1.44.0-wmf.19/includes/content/Renderer/ContentRenderer.php(75)MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#17/srv/mediawiki/php-1.44.0-wmf.19/includes/Revision/RenderedRevision.php(261)MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Page\PageIdentityValue, MediaWiki\Revision\RevisionStoreRecord, MediaWiki\Parser\ParserOptions, array)
#18/srv/mediawiki/php-1.44.0-wmf.19/includes/Revision/RenderedRevision.php(233)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#19/srv/mediawiki/php-1.44.0-wmf.19/includes/Revision/RevisionRenderer.php(236)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#20/srv/mediawiki/php-1.44.0-wmf.19/includes/Revision/RevisionRenderer.php(169)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#21/srv/mediawiki/php-1.44.0-wmf.19/includes/Revision/RenderedRevision.php(196)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#22/srv/mediawiki/php-1.44.0-wmf.19/includes/poolcounter/PoolWorkArticleView.php(106)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#23/srv/mediawiki/php-1.44.0-wmf.19/includes/poolcounter/PoolWorkArticleViewOld.php(81)MediaWiki\PoolCounter\PoolWorkArticleView->renderRevision(null, bool, string)
#24/srv/mediawiki/php-1.44.0-wmf.19/includes/poolcounter/PoolCounterWork.php(171)MediaWiki\PoolCounter\PoolWorkArticleViewOld->doWork()
#25/srv/mediawiki/php-1.44.0-wmf.19/includes/page/ParserOutputAccess.php(369)MediaWiki\PoolCounter\PoolCounterWork->execute()
#26/srv/mediawiki/php-1.44.0-wmf.19/includes/page/Article.php(829)MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, int)
#27/srv/mediawiki/php-1.44.0-wmf.19/includes/page/Article.php(545)Article->generateContentOutput(MediaWiki\User\User, MediaWiki\Parser\ParserOptions, int, MediaWiki\Output\OutputPage, array)
#28/srv/mediawiki/php-1.44.0-wmf.19/includes/actions/ViewAction.php(78)Article->view()
#29/srv/mediawiki/php-1.44.0-wmf.19/includes/actions/ActionEntryPoint.php(732)ViewAction->show()
#30/srv/mediawiki/php-1.44.0-wmf.19/includes/actions/ActionEntryPoint.php(509)MediaWiki\Actions\ActionEntryPoint->performAction(Article, MediaWiki\Title\Title)
#31/srv/mediawiki/php-1.44.0-wmf.19/includes/actions/ActionEntryPoint.php(145)MediaWiki\Actions\ActionEntryPoint->performRequest()
#32/srv/mediawiki/php-1.44.0-wmf.19/includes/MediaWikiEntryPoint.php(202)MediaWiki\Actions\ActionEntryPoint->execute()
#33/srv/mediawiki/php-1.44.0-wmf.19/index.php(58)MediaWiki\MediaWikiEntryPoint->run()
#34/srv/mediawiki/w/index.php(3)require(string)
#35{main}
Impact
Notes
return preg_replace( array_keys( $fixtags ), array_values( $fixtags ), $text );

preg_replace is returning null, most likely due to some sort of invalid input. Probably indicates a corrupt revision in the DB. (But I haven't poked at undecodable revisions in a while so this isn't me)