Page MenuHomePhabricator

RuntimeException: Regex failed: 2
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
  • service.version: 1.45.0-wmf.9
  • timestamp: 2025-07-09T08:29:30.442Z
  • labels.phpversion: 8.1.32
  • trace.id: 8d61d0b0-d96b-40b5-ab9b-c29407318bb5
  • Find trace.id in Logstash
labels.normalized_message
[{reqId}] {exception_url}   RuntimeException: Regex failed: 2
FrameLocationCall
from/srv/mediawiki/php-1.45.0-wmf.9/includes/parser/Parser.php(6537)
#0/srv/mediawiki/php-1.45.0-wmf.9/includes/parser/Parsoid/Config/DataAccess.php(399)MediaWiki\Parser\Parser::extractBody(null)
#1/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(816)MediaWiki\Parser\Parsoid\Config\DataAccess->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOutput, string)
#2/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExtensionHandler.php(161)Wikimedia\Parsoid\Utils\PipelineUtils::parseToHTML(Wikimedia\Parsoid\Config\Env, string)
#3/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExtensionHandler.php(282)Wikimedia\Parsoid\Wt2Html\TT\ExtensionHandler->onExtension(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#4/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/TT/XMLTagBasedHandler.php(47)Wikimedia\Parsoid\Wt2Html\TT\ExtensionHandler->onTag(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#5/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/TokenHandlerPipeline.php(129)Wikimedia\Parsoid\Wt2Html\TT\XMLTagBasedHandler->process(array)
#6/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/TokenHandlerPipeline.php(193)Wikimedia\Parsoid\Wt2Html\TokenHandlerPipeline->processChunk(array)
#7/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/TokenHandlerPipeline.php(191)Wikimedia\Parsoid\Wt2Html\TokenHandlerPipeline->processChunkily(string, array)
#8/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/TreeBuilder/TreeBuilderStage.php(503)Wikimedia\Parsoid\Wt2Html\TokenHandlerPipeline->processChunkily(string, array)
#9[internal function]Wikimedia\Parsoid\Wt2Html\TreeBuilder\TreeBuilderStage->processChunkily(string, array)
#10/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/DOMProcessorPipeline.php(196)Generator->current()
#11/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(165)Wikimedia\Parsoid\Wt2Html\DOMProcessorPipeline->processChunkily(string, array)
#12/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(619)Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#13/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php(187)Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#14/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Parsoid.php(198)Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI, null)
#15/srv/mediawiki/php-1.45.0-wmf.9/vendor/wikimedia/parsoid/src/Parsoid.php(264)Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOutput, array, null)
#16/srv/mediawiki/php-1.45.0-wmf.9/includes/parser/Parsoid/ParsoidParser.php(166)Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, null, MediaWiki\Parser\ParserOutput)
#17/srv/mediawiki/php-1.45.0-wmf.9/includes/parser/Parsoid/ParsoidParser.php(294)MediaWiki\Parser\Parsoid\ParsoidParser->genParserOutput(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOptions, null)
#18/srv/mediawiki/php-1.45.0-wmf.9/includes/content/WikitextContentHandler.php(382)MediaWiki\Parser\Parsoid\ParsoidParser->parse(string, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int, null)
#19/srv/mediawiki/php-1.45.0-wmf.9/includes/content/ContentHandler.php(1695)MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#20/srv/mediawiki/php-1.45.0-wmf.9/includes/content/Renderer/ContentRenderer.php(75)MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#21/srv/mediawiki/php-1.45.0-wmf.9/includes/Revision/RenderedRevision.php(261)MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Page\PageIdentityValue, MediaWiki\Revision\RevisionStoreRecord, MediaWiki\Parser\ParserOptions, array)
#22/srv/mediawiki/php-1.45.0-wmf.9/includes/Revision/RenderedRevision.php(233)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#23/srv/mediawiki/php-1.45.0-wmf.9/includes/Revision/RevisionRenderer.php(238)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#24/srv/mediawiki/php-1.45.0-wmf.9/includes/Revision/RevisionRenderer.php(171)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#25/srv/mediawiki/php-1.45.0-wmf.9/includes/Revision/RenderedRevision.php(196)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#26/srv/mediawiki/php-1.45.0-wmf.9/includes/page/ParserOutputAccess.php(591)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#27/srv/mediawiki/php-1.45.0-wmf.9/includes/page/ParserOutputAccess.php(678)MediaWiki\Page\ParserOutputAccess->renderRevision(MediaWiki\Page\PageStoreRecord, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, array)
#28/srv/mediawiki/php-1.45.0-wmf.9/includes/poolcounter/PoolCounterWorkViaCallback.php(81)MediaWiki\Page\ParserOutputAccess->MediaWiki\Page\{closure}()
#29/srv/mediawiki/php-1.45.0-wmf.9/includes/poolcounter/PoolCounterWork.php(173)MediaWiki\PoolCounter\PoolCounterWorkViaCallback->doWork()
#30/srv/mediawiki/php-1.45.0-wmf.9/includes/page/ParserOutputAccess.php(495)MediaWiki\PoolCounter\PoolCounterWork->execute()
#31/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(931)MediaWiki\Page\ParserOutputAccess->getParserOutput(MediaWiki\Page\PageStoreRecord, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, array)
#32/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(661)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutputInternal()
#33/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(485)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutput()
#34/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/Handler/RevisionHTMLHandler.php(75)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getHtml()
#35/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/SimpleHandler.php(40)MediaWiki\Rest\Handler\RevisionHTMLHandler->run(int)
#36/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/Module/Module.php(418)MediaWiki\Rest\SimpleHandler->execute()
#37/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/Module/Module.php(301)MediaWiki\Rest\Module\Module->executeHandler(MediaWiki\Rest\Handler\RevisionHTMLHandler)
#38/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/Router.php(485)MediaWiki\Rest\Module\Module->execute(string, MediaWiki\Rest\RequestFromGlobals)
#39/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/Router.php(444)MediaWiki\Rest\Router->doExecute(string, MediaWiki\Rest\RequestFromGlobals)
#40/srv/mediawiki/php-1.45.0-wmf.9/includes/Rest/EntryPoint.php(209)MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#41/srv/mediawiki/php-1.45.0-wmf.9/includes/MediaWikiEntryPoint.php(198)MediaWiki\Rest\EntryPoint->execute()
#42/srv/mediawiki/php-1.45.0-wmf.9/rest.php(39)MediaWiki\MediaWikiEntryPoint->run()
#43/srv/mediawiki/w/rest.php(3)require(string)
#44{main}
Impact
  • Happens on several Wikisources
Notes
  • First occurrence: Jul 3, 2025 @ 13:32:44.344

Event Timeline

SLopes-WMF removed projects: Content-Transform-Team, Parsoid.

@SLopes-WMF Why? If I guessed the wrong codebase, then please add the correct codebase to the project tags, otherwise tasks do not show up on corresponding workboards - thanks.

@Aklapper it's in the core parser, not Parsoid. I think removing CTT was a mistake.

cscott added subscribers: Reedy, Jgiannelos, ihurbain, Tacsipacsi.

I can reproduce this with psysh:

> ini_set('pcre.backtrack_limit', 100);
> $text = str_repeat('<body', 1000000); null
> preg_replace( '!^.*?<body[^>]*>!s', '', $text, 1 );
= null

Change #1167903 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Parser::extractBody: Use possessive matcher and once-only subpattern

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

The debugging code added in T388729 should be removed before this task is resolved.

Change #1167903 merged by jenkins-bot:

[mediawiki/core@master] Parser::extractBody: Use possessive matcher and once-only subpattern

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

Change #1170335 had a related patch set uploaded (by Reedy; author: C. Scott Ananian):

[mediawiki/core@REL1_43] Parser::extractBody: Use possessive matcher and once-only subpattern

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

Change #1170336 had a related patch set uploaded (by Reedy; author: C. Scott Ananian):

[mediawiki/core@REL1_44] Parser::extractBody: Use possessive matcher and once-only subpattern

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

Change #1170335 merged by jenkins-bot:

[mediawiki/core@REL1_43] Parser::extractBody: Use possessive matcher and once-only subpattern

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

Change #1170336 merged by jenkins-bot:

[mediawiki/core@REL1_44] Parser::extractBody: Use possessive matcher and once-only subpattern

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

Change #1170353 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/core@master] Parser::extractBody: Use strpos instead of regexp

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

Change #1170353 merged by jenkins-bot:

[mediawiki/core@master] Parser::extractBody: Use strpos instead of regexp

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

Change #1172364 had a related patch set uploaded (by Krinkle; author: Krinkle):

[mediawiki/core@master] parser: Optimize extractBody() by merging two substr() calls

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

Change #1172364 merged by jenkins-bot:

[mediawiki/core@master] parser: Optimize extractBody() by merging two substr() calls

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