Page MenuHomePhabricator

Wikimedia\Assert\InvariantException: Invariant failed: Bad UTF-8 at end of string (2 byte sequence)
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\InvariantException: Invariant failed: Bad UTF-8 at end of string (2 byte sequence)
exception.trace
from /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/assert/src/Assert.php(231)
#0 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Utils/PHPUtils.php(194): Wikimedia\Assert\Assert::invariant(bool, string)
#1 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Tokens/SourceRange.php(86): Wikimedia\Parsoid\Utils\PHPUtils::safeSubstr(string, int, int)
#2 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/WikiLinkHandler.php(253): Wikimedia\Parsoid\Tokens\SourceRange->substr(string)
#3 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExternalLinkHandler.php(244): Wikimedia\Parsoid\Wt2Html\TT\WikiLinkHandler::bailTokens(Wikimedia\Parsoid\Wt2Html\TokenTransformManager, Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#4 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExternalLinkHandler.php(254): Wikimedia\Parsoid\Wt2Html\TT\ExternalLinkHandler->onExtLink(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#5 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php(138): Wikimedia\Parsoid\Wt2Html\TT\ExternalLinkHandler->onTag(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#6 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(113): Wikimedia\Parsoid\Wt2Html\TT\TokenHandler->process(array)
#7 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(166): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunk(array)
#8 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(130): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->process(array, array)
#9 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(107): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parse(string, array)
#10 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Ext/ParsoidExtensionAPI.php(392): Wikimedia\Parsoid\Utils\PipelineUtils::processContentInPipeline(Wikimedia\Parsoid\Config\Env, Wikimedia\Parsoid\Wt2Html\Frame, string, array)
#11 /srv/mediawiki/php-1.43.0-wmf.19/extensions/Kartographer/includes/Tag/ParsoidMapFrame.php(106): Wikimedia\Parsoid\Ext\ParsoidExtensionAPI->wikitextToDOM(string, array, bool)
#12 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExtensionHandler.php(101): Kartographer\Tag\ParsoidMapFrame->sourceToDom(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI, string, array)
#13 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExtensionHandler.php(273): Wikimedia\Parsoid\Wt2Html\TT\ExtensionHandler->onExtension(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#14 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php(138): Wikimedia\Parsoid\Wt2Html\TT\ExtensionHandler->onTag(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#15 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(113): Wikimedia\Parsoid\Wt2Html\TT\TokenHandler->process(array)
#16 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(166): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunk(array)
#17 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(130): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->process(array, array)
#18 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(107): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parse(string, array)
#19 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(643): Wikimedia\Parsoid\Utils\PipelineUtils::processContentInPipeline(Wikimedia\Parsoid\Config\Env, Wikimedia\Parsoid\Wt2Html\PageConfigFrame, string, array)
#20 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1080): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->processTemplateSource(Wikimedia\Parsoid\Tokens\SelfclosingTagTk, array, string)
#21 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1110): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->expandTemplate(Wikimedia\Parsoid\Wt2Html\TT\TemplateEncapsulator)
#22 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1151): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTemplate(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#23 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php(138): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTag(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#24 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(113): Wikimedia\Parsoid\Wt2Html\TT\TokenHandler->process(array)
#25 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(176): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunk(array)
#26 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(174): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunkily(string, array)
#27 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/TreeBuilder/TreeBuilderStage.php(476): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunkily(string, array)
#28 [internal function]: Wikimedia\Parsoid\Wt2Html\TreeBuilder\TreeBuilderStage->processChunkily(string, array)
#29 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(956): Generator->current()
#30 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(170): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily(string, array)
#31 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(279): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#32 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php(159): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#33 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Parsoid.php(194): Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI)
#34 /srv/mediawiki/php-1.43.0-wmf.19/vendor/wikimedia/parsoid/src/Parsoid.php(236): Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOutput, array)
#35 /srv/mediawiki/php-1.43.0-wmf.19/includes/parser/Parsoid/ParsoidParser.php(133): Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, null, MediaWiki\Parser\ParserOutput)
#36 /srv/mediawiki/php-1.43.0-wmf.19/includes/parser/Parsoid/ParsoidParser.php(237): MediaWiki\Parser\Parsoid\ParsoidParser->genParserOutput(MediaWiki\Parser\Parsoid\Config\PageConfig, ParserOptions)
#37 /srv/mediawiki/php-1.43.0-wmf.19/includes/content/WikitextContentHandler.php(381): MediaWiki\Parser\Parsoid\ParsoidParser->parse(string, MediaWiki\Title\Title, ParserOptions, bool, bool, int)
#38 /srv/mediawiki/php-1.43.0-wmf.19/includes/content/ContentHandler.php(1693): MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#39 /srv/mediawiki/php-1.43.0-wmf.19/includes/content/Renderer/ContentRenderer.php(67): MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#40 /srv/mediawiki/php-1.43.0-wmf.19/includes/Revision/RenderedRevision.php(260): MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Title\Title, MediaWiki\Revision\RevisionStoreCacheRecord, ParserOptions, bool)
#41 /srv/mediawiki/php-1.43.0-wmf.19/includes/Revision/RenderedRevision.php(232): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, bool)
#42 /srv/mediawiki/php-1.43.0-wmf.19/includes/Revision/RevisionRenderer.php(226): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#43 /srv/mediawiki/php-1.43.0-wmf.19/includes/Revision/RevisionRenderer.php(164): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, ParserOptions, array)
#44 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#45 /srv/mediawiki/php-1.43.0-wmf.19/includes/Revision/RenderedRevision.php(199): call_user_func(Closure, MediaWiki\Revision\RenderedRevision, array)
#46 /srv/mediawiki/php-1.43.0-wmf.19/includes/poolcounter/PoolWorkArticleView.php(91): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#47 /srv/mediawiki/php-1.43.0-wmf.19/includes/poolcounter/PoolWorkArticleViewCurrent.php(107): MediaWiki\PoolCounter\PoolWorkArticleView->renderRevision()
#48 /srv/mediawiki/php-1.43.0-wmf.19/includes/poolcounter/PoolCounterWork.php(171): MediaWiki\PoolCounter\PoolWorkArticleViewCurrent->doWork()
#49 /srv/mediawiki/php-1.43.0-wmf.19/includes/page/ParserOutputAccess.php(330): MediaWiki\PoolCounter\PoolCounterWork->execute()
#50 /srv/mediawiki/php-1.43.0-wmf.19/includes/page/Article.php(826): MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiPage, ParserOptions, MediaWiki\Revision\RevisionStoreCacheRecord, int)
#51 /srv/mediawiki/php-1.43.0-wmf.19/includes/page/Article.php(545): Article->generateContentOutput(MediaWiki\User\User, ParserOptions, int, MediaWiki\Output\OutputPage, array)
#52 /srv/mediawiki/php-1.43.0-wmf.19/includes/actions/ViewAction.php(78): Article->view()
#53 /srv/mediawiki/php-1.43.0-wmf.19/includes/actions/ActionEntryPoint.php(731): ViewAction->show()
#54 /srv/mediawiki/php-1.43.0-wmf.19/includes/actions/ActionEntryPoint.php(508): MediaWiki\Actions\ActionEntryPoint->performAction(Article, MediaWiki\Title\Title)
#55 /srv/mediawiki/php-1.43.0-wmf.19/includes/actions/ActionEntryPoint.php(145): MediaWiki\Actions\ActionEntryPoint->performRequest()
#56 /srv/mediawiki/php-1.43.0-wmf.19/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint->execute()
#57 /srv/mediawiki/php-1.43.0-wmf.19/index.php(58): MediaWiki\MediaWikiEntryPoint->run()
#58 /srv/mediawiki/w/index.php(3): require(string)
#59 {main}
Impact

Crashes the Parsoid read-views and /page/<>/html API, mostly on hewiki; a few instances on ukwiki.
Example:
/w/rest.php/uk.wikipedia.org/v3/page/pagebundle/%D0%91%D0%B8%D1%82%D0%B2%D0%B0_%D0%B7%D0%B0_%D0%9A%D0%B8%D1%97%D0%B2_(2022)/42920343 with a trace that also involves Kartographer but that crashes on templatehandler, not linkhandler

Notes

This is probably related to the parsoid+kartographer roll-out.

Details

Request URL
https://he.wikipedia.org/wiki/%D7%99%D7%A9%D7%99%D7%91%D7%AA_%D7%92%D7%A8%D7%95%D7%93%D7%A0%D7%90_(%D7%99%D7%A9%D7%A8%D7%90%D7%9C)
Related Changes in Gerrit:

Event Timeline

Change #1067381 had a related patch set uploaded (by Isabelle Hurbain-Palatin; author: Isabelle Hurbain-Palatin):

[operations/mediawiki-config@master] Rollback Parsoid+Kartographer rollout on hewiki and commons

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

Change #1067381 merged by jenkins-bot:

[operations/mediawiki-config@master] Rollback Parsoid+Kartographer rollout on hewiki and commons

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

Mentioned in SAL (#wikimedia-operations) [2024-08-27T20:55:08Z] <zabe@deploy1003> Started scap sync-world: Backport for [[gerrit:1067398|Activates the "compact" Parsoid indicator on all wikivoyage wikis (T372789)]], [[gerrit:1067381|Rollback Parsoid+Kartographer rollout on hewiki and commons (T373454 T373460)]]

Mentioned in SAL (#wikimedia-operations) [2024-08-27T20:57:13Z] <zabe@deploy1003> ihurbain, zabe, cscott: Backport for [[gerrit:1067398|Activates the "compact" Parsoid indicator on all wikivoyage wikis (T372789)]], [[gerrit:1067381|Rollback Parsoid+Kartographer rollout on hewiki and commons (T373454 T373460)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-08-27T21:06:03Z] <zabe@deploy1003> Finished scap sync-world: Backport for [[gerrit:1067398|Activates the "compact" Parsoid indicator on all wikivoyage wikis (T372789)]], [[gerrit:1067381|Rollback Parsoid+Kartographer rollout on hewiki and commons (T373454 T373460)]] (duration: 10m 55s)

Change #1068825 had a related patch set uploaded (by Isabelle Hurbain-Palatin; author: Isabelle Hurbain-Palatin):

[mediawiki/extensions/Kartographer@master] Create new frame and clear DSR offset on extension tags

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

Change #1068825 merged by jenkins-bot:

[mediawiki/extensions/Kartographer@master] Create new frame and clear DSR offset on extension tags

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

Hi @ihurbain, thanks so much for your work on this! @cscott, do we have an estimated timeline for closing this? I'm asking because it's a key dependency for our re-ingestion, and I'd like to provide Product with an updated timeline. No pressure, just aiming to keep them informed.

Thanks again!

This bug should be fixed. If you are still seeing these errors we should open another phab task with an updated stack trace.

Thanks a lot! I appreciate your help

Change #1100850 had a related patch set uploaded (by Isabelle Hurbain-Palatin; author: Isabelle Hurbain-Palatin):

[operations/mediawiki-config@master] Reactivate Parsoid+Kartographer on hewiki and commonswiki

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

Change #1100850 merged by jenkins-bot:

[operations/mediawiki-config@master] Reactivate Parsoid+Kartographer on hewiki and commonswiki

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

Mentioned in SAL (#wikimedia-operations) [2025-01-07T14:11:43Z] <ladsgroup@deploy2002> Started scap sync-world: Backport for [[gerrit:1100850|Reactivate Parsoid+Kartographer on hewiki and commonswiki (T373454 T373460)]]

Mentioned in SAL (#wikimedia-operations) [2025-01-07T14:20:24Z] <ladsgroup@deploy2002> ladsgroup, ihurbain: Backport for [[gerrit:1100850|Reactivate Parsoid+Kartographer on hewiki and commonswiki (T373454 T373460)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2025-01-07T14:36:40Z] <ladsgroup@deploy2002> Finished scap sync-world: Backport for [[gerrit:1100850|Reactivate Parsoid+Kartographer on hewiki and commonswiki (T373454 T373460)]] (duration: 24m 56s)