Page MenuHomePhabricator

PHP Warning: DOMNode::appendChild(): Document Fragment is empty
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
  • mwversion: 1.45.0-wmf.15
  • timestamp: 2025-08-21T11:11:23.411Z
  • phpversion: 8.1.33
  • reqId: acb7d736-850c-4de9-b48e-70ca3adfaab7
  • Find reqId in Logstash
normalized_message
[{reqId}] {exception_url}   PHP Warning: DOMNode::appendChild(): Document Fragment is empty
FrameLocationCall
from/srv/mediawiki/php-1.45.0-wmf.15/extensions/Kartographer/includes/Tag/ParsoidMapFrame.php(106)
#0[internal function]MediaWiki\Exception\MWExceptionHandler::handleError(int, string, string, int)
#1/srv/mediawiki/php-1.45.0-wmf.15/extensions/Kartographer/includes/Tag/ParsoidMapFrame.php(106)DOMNode->appendChild(Wikimedia\Parsoid\DOM\DocumentFragment)
#2/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExtensionHandler.php(123)Kartographer\Tag\ParsoidMapFrame->sourceToDom(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI, string, array)
#3/srv/mediawiki/php-1.45.0-wmf.15/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.15/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.15/vendor/wikimedia/parsoid/src/Wt2Html/TokenHandlerPipeline.php(129)Wikimedia\Parsoid\Wt2Html\TT\XMLTagBasedHandler->process(array)
#6/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TokenHandlerPipeline.php(183)Wikimedia\Parsoid\Wt2Html\TokenHandlerPipeline->processChunk(array)
#7/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(127)Wikimedia\Parsoid\Wt2Html\TokenHandlerPipeline->process(array, array)
#8/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(137)Wikimedia\Parsoid\Wt2Html\ParserPipeline->parse(string, array)
#9/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(222)Wikimedia\Parsoid\Utils\PipelineUtils::processContentInPipeline(Wikimedia\Parsoid\Config\Env, Wikimedia\Parsoid\Wt2Html\PageConfigFrame, string, array)
#10/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(596)Wikimedia\Parsoid\Utils\PipelineUtils::processTemplateSource(Wikimedia\Parsoid\Config\Env, Wikimedia\Parsoid\Wt2Html\PageConfigFrame, Wikimedia\Parsoid\Tokens\SelfclosingTagTk, array, string, array)
#11/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1033)Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->processTemplateSource(Wikimedia\Parsoid\Wt2Html\PageConfigFrame, Wikimedia\Parsoid\Tokens\SelfclosingTagTk, array, string, array)
#12/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1060)Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->expandTemplate(Wikimedia\Parsoid\Wt2Html\TT\TemplateEncapsulator)
#13/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1101)Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTemplate(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#14/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TT/XMLTagBasedHandler.php(47)Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTag(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#15/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TokenHandlerPipeline.php(129)Wikimedia\Parsoid\Wt2Html\TT\XMLTagBasedHandler->process(array)
#16/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TokenHandlerPipeline.php(193)Wikimedia\Parsoid\Wt2Html\TokenHandlerPipeline->processChunk(array)
#17/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TokenHandlerPipeline.php(191)Wikimedia\Parsoid\Wt2Html\TokenHandlerPipeline->processChunkily(string, array)
#18/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/TreeBuilder/TreeBuilderStage.php(503)Wikimedia\Parsoid\Wt2Html\TokenHandlerPipeline->processChunkily(string, array)
#19[internal function]Wikimedia\Parsoid\Wt2Html\TreeBuilder\TreeBuilderStage->processChunkily(string, array)
#20/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/DOMProcessorPipeline.php(196)Generator->current()
#21/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(164)Wikimedia\Parsoid\Wt2Html\DOMProcessorPipeline->processChunkily(string, array)
#22/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(619)Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#23/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php(187)Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#24/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Parsoid.php(198)Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI, null)
#25/srv/mediawiki/php-1.45.0-wmf.15/vendor/wikimedia/parsoid/src/Parsoid.php(264)Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOutput, array, null)
#26/srv/mediawiki/php-1.45.0-wmf.15/includes/parser/Parsoid/ParsoidParser.php(166)Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, null, MediaWiki\Parser\ParserOutput)
#27/srv/mediawiki/php-1.45.0-wmf.15/includes/parser/Parsoid/ParsoidParser.php(294)MediaWiki\Parser\Parsoid\ParsoidParser->genParserOutput(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOptions, MediaWiki\Parser\ParserOutput)
#28/srv/mediawiki/php-1.45.0-wmf.15/includes/content/WikitextContentHandler.php(389)MediaWiki\Parser\Parsoid\ParsoidParser->parse(string, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int, MediaWiki\Parser\ParserOutput)
#29/srv/mediawiki/php-1.45.0-wmf.15/includes/content/ContentHandler.php(1695)MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#30/srv/mediawiki/php-1.45.0-wmf.15/includes/content/Renderer/ContentRenderer.php(75)MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#31/srv/mediawiki/php-1.45.0-wmf.15/includes/Revision/RenderedRevision.php(261)MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Page\PageIdentityValue, MediaWiki\Revision\RevisionStoreRecord, MediaWiki\Parser\ParserOptions, array)
#32/srv/mediawiki/php-1.45.0-wmf.15/includes/Revision/RenderedRevision.php(233)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#33/srv/mediawiki/php-1.45.0-wmf.15/includes/Revision/RevisionRenderer.php(237)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#34/srv/mediawiki/php-1.45.0-wmf.15/includes/Revision/RevisionRenderer.php(170)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#35/srv/mediawiki/php-1.45.0-wmf.15/includes/Revision/RenderedRevision.php(196)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#36/srv/mediawiki/php-1.45.0-wmf.15/includes/page/ParserOutputAccess.php(602)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#37/srv/mediawiki/php-1.45.0-wmf.15/includes/page/ParserOutputAccess.php(689)MediaWiki\Page\ParserOutputAccess->renderRevision(MediaWiki\Page\PageStoreRecord, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, array)
#38/srv/mediawiki/php-1.45.0-wmf.15/includes/poolcounter/PoolCounterWorkViaCallback.php(82)MediaWiki\Page\ParserOutputAccess->MediaWiki\Page\{closure}()
#39/srv/mediawiki/php-1.45.0-wmf.15/includes/poolcounter/PoolCounterWork.php(173)MediaWiki\PoolCounter\PoolCounterWorkViaCallback->doWork()
#40/srv/mediawiki/php-1.45.0-wmf.15/includes/page/ParserOutputAccess.php(506)MediaWiki\PoolCounter\PoolCounterWork->execute()
#41/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(931)MediaWiki\Page\ParserOutputAccess->getParserOutput(MediaWiki\Page\PageStoreRecord, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, array)
#42/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(661)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutputInternal()
#43/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(549)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutput()
#44/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Handler/RevisionHTMLHandler.php(111)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getETag(string)
#45/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Handler.php(502)MediaWiki\Rest\Handler\RevisionHTMLHandler->getETag()
#46/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/ConditionalHeaderUtil.php(68)MediaWiki\Rest\Handler->MediaWiki\Rest\{closure}()
#47/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/ConditionalHeaderUtil.php(79)MediaWiki\Rest\ConditionalHeaderUtil->getETag()
#48/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/ConditionalHeaderUtil.php(163)MediaWiki\Rest\ConditionalHeaderUtil->getETagParts()
#49/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Handler.php(519)MediaWiki\Rest\ConditionalHeaderUtil->checkPreconditions(MediaWiki\Rest\RequestFromGlobals)
#50/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Module/Module.php(412)MediaWiki\Rest\Handler->checkPreconditions()
#51/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Module/Module.php(301)MediaWiki\Rest\Module\Module->executeHandler(MediaWiki\Rest\Handler\RevisionHTMLHandler)
#52/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Router.php(485)MediaWiki\Rest\Module\Module->execute(string, MediaWiki\Rest\RequestFromGlobals)
#53/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/Router.php(444)MediaWiki\Rest\Router->doExecute(string, MediaWiki\Rest\RequestFromGlobals)
#54/srv/mediawiki/php-1.45.0-wmf.15/includes/Rest/EntryPoint.php(207)MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#55/srv/mediawiki/php-1.45.0-wmf.15/includes/MediaWikiEntryPoint.php(198)MediaWiki\Rest\EntryPoint->execute()
#56/srv/mediawiki/php-1.45.0-wmf.15/rest.php(39)MediaWiki\MediaWikiEntryPoint->run()
#57/srv/mediawiki/w/rest.php(3)require(string)
#58{main}
Impact
Notes

Details

Request URL
https://sk.wikipedia.org/w/rest.php/v1/revision/8078143/html
Related Changes in Gerrit:

Event Timeline

8 instances in the last month, so not a high priority, but can likely something busted in the extension API if it is returning an empty fragment for what is not an empty input string.

This is currently at the top of logspam-watch (166 occurrences in the past 60 minutes); Logstash suggests it’s picked up recently:

image.png (304×1 px, 30 KB)

The bulk of this is on mnw.wiktionary.org (16,249).

I'm on train duty this week. I concur with @Lucas_Werkmeister_WMDE that this is warning is making itself very noticeable this week so far.

@Lucas_Werkmeister_WMDE @dancy The stack trace from the logs on mnwwiktionary that I'm seeing look more like T407323 than this one. There's already a patch out for that and the logs were supposed to be suppressed. I can backport the patch in the late window in the next 10 mins or so if you'd like

@Lucas_Werkmeister_WMDE @dancy The stack trace from the logs on mnwwiktionary that I'm seeing look more like T407323 than this one. There's already a patch out for that and the logs were supposed to be suppressed. I can backport the patch in the late window in the next 10 mins or so if you'd like

Yes please!

@dancy Ok, there hasn't been any occurrences of T407323 in the past half hour since the deploy

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

[mediawiki/extensions/Kartographer@master] Avoid appending an empty Document Fragment

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

@dancy Ok, there hasn't been any occurrences of T407323 in the past half hour since the deploy

Thank you very much!

Change #1197718 merged by jenkins-bot:

[mediawiki/extensions/Kartographer@master] Avoid appending an empty Document Fragment

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

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

[mediawiki/extensions/Kartographer@master] Use DOMCompat to append document fragment

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

Change #1217475 merged by jenkins-bot:

[mediawiki/extensions/Kartographer@master] Use DOMCompat to append document fragment

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