⚓ T266171 Return value of Wikimedia\Parsoid\Config\Env::getDOMFragment() must be an instance of DOMDocumentFragment, null returned
Page MenuHomePhabricator

Return value of Wikimedia\Parsoid\Config\Env::getDOMFragment() must be an instance of DOMDocumentFragment, null returned
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error

MediaWiki version: 1.36.0-wmf.14

message
Return value of Wikimedia\Parsoid\Config\Env::getDOMFragment() must be an instance of DOMDocumentFragment, null returned

Impact

Notes

  • Started when we promoted wmf-14 to group 1

Details

Request ID
57f17434-5680-40da-97eb-242f32ae0497
Request URL
https://he.wikipedia.org/w/rest.php/he.wikipedia.org/v3/page/pagebundle/%D7%9E%D7%A9%D7%AA%D7%9E%D7%A9%3A%D7%97%D7%96%D7%A8%D7%AA%D7%99/29583212
Stack Trace
exception.trace
#0 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/PP/Handlers/UnpackDOMFragments.php(203): Wikimedia\Parsoid\Config\Env->getDOMFragment(string)
#1 [internal function]: Wikimedia\Parsoid\Wt2Html\PP\Handlers\UnpackDOMFragments::handler(DOMElement, Wikimedia\Parsoid\Config\Env, array, boolean, stdClass)
#2 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(80): call_user_func(array, DOMElement, Wikimedia\Parsoid\Config\Env, array, boolean, stdClass)
#3 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(152): Wikimedia\Parsoid\Utils\DOMTraverser->callHandlers(DOMElement, Wikimedia\Parsoid\Config\Env, array, boolean, stdClass)
#4 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(167): Wikimedia\Parsoid\Utils\DOMTraverser->traverse(Wikimedia\Parsoid\Config\Env, DOMElement, array, boolean, stdClass)
#5 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(167): Wikimedia\Parsoid\Utils\DOMTraverser->traverse(Wikimedia\Parsoid\Config\Env, DOMElement, array, boolean, stdClass)
#6 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(167): Wikimedia\Parsoid\Utils\DOMTraverser->traverse(Wikimedia\Parsoid\Config\Env, DOMElement, array, boolean, stdClass)
#7 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(149): Wikimedia\Parsoid\Utils\DOMTraverser->traverse(Wikimedia\Parsoid\Config\Env, DOMElement, array, boolean, NULL)
#8 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(841): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->Wikimedia\Parsoid\Wt2Html\{closure}(DOMElement, array, boolean)
#9 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(890): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->doPostProcess(DOMElement)
#10 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(907): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->process(DOMElement)
#11 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(152): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily(string, array)
#12 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(204): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#13 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(299): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseToplevelDoc(string, array)
#14 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Core/WikitextContentModelHandler.php(99): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#15 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Parsoid.php(161): Wikimedia\Parsoid\Core\WikitextContentModelHandler->toDOM(Wikimedia\Parsoid\Config\Env)
#16 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Parsoid.php(193): Wikimedia\Parsoid\Parsoid->parseWikitext(MWParsoid\Config\PageConfig, array)
#17 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/extension/src/Rest/Handler/ParsoidHandler.php(589): Wikimedia\Parsoid\Parsoid->wikitext2html(MWParsoid\Config\PageConfig, array, NULL)
#18 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/extension/src/Rest/Handler/PageHandler.php(88): MWParsoid\Rest\Handler\ParsoidHandler->wt2html(MWParsoid\Config\PageConfig, array)
#19 /srv/mediawiki/php-1.36.0-wmf.14/includes/Rest/Router.php(381): MWParsoid\Rest\Handler\PageHandler->execute()
#20 /srv/mediawiki/php-1.36.0-wmf.14/includes/Rest/Router.php(316): MediaWiki\Rest\Router->executeHandler(MWParsoid\Rest\Handler\PageHandler)
#21 /srv/mediawiki/php-1.36.0-wmf.14/includes/Rest/EntryPoint.php(155): MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#22 /srv/mediawiki/php-1.36.0-wmf.14/includes/Rest/EntryPoint.php(119): MediaWiki\Rest\EntryPoint->execute()
#23 /srv/mediawiki/php-1.36.0-wmf.14/rest.php(31): MediaWiki\Rest\EntryPoint::main()
#24 /srv/mediawiki/w/rest.php(3): require(string)
#25 {main}

Event Timeline

Another error that seems related:

Error message: PHP Notice: Undefined index: mwf1

Stack trace:

#0 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Config/Env.php(820): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/PP/Handlers/UnpackDOMFragments.php(203): Wikimedia\Parsoid\Config\Env->getDOMFragment(string)
#2 [internal function]: Wikimedia\Parsoid\Wt2Html\PP\Handlers\UnpackDOMFragments::handler(DOMElement, Wikimedia\Parsoid\Config\Env, array, boolean, stdClass)
#3 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(80): call_user_func(array, DOMElement, Wikimedia\Parsoid\Config\Env, array, boolean, stdClass)
#4 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(152): Wikimedia\Parsoid\Utils\DOMTraverser->callHandlers(DOMElement, Wikimedia\Parsoid\Config\Env, array, boolean, stdClass)
#5 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(167): Wikimedia\Parsoid\Utils\DOMTraverser->traverse(Wikimedia\Parsoid\Config\Env, DOMElement, array, boolean, stdClass)
#6 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(167): Wikimedia\Parsoid\Utils\DOMTraverser->traverse(Wikimedia\Parsoid\Config\Env, DOMElement, array, boolean, stdClass)
#7 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Utils/DOMTraverser.php(167): Wikimedia\Parsoid\Utils\DOMTraverser->traverse(Wikimedia\Parsoid\Config\Env, DOMElement, array, boolean, stdClass)
#8 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(149): Wikimedia\Parsoid\Utils\DOMTraverser->traverse(Wikimedia\Parsoid\Config\Env, DOMElement, array, boolean, NULL)
#9 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(841): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->Wikimedia\Parsoid\Wt2Html\{closure}(DOMElement, array, boolean)
#10 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(890): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->doPostProcess(DOMElement)
#11 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(907): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->process(DOMElement)
#12 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(152): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily(string, array)
#13 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(204): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#14 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(299): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseToplevelDoc(string, array)
#15 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Core/WikitextContentModelHandler.php(99): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#16 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Parsoid.php(161): Wikimedia\Parsoid\Core\WikitextContentModelHandler->toDOM(Wikimedia\Parsoid\Config\Env)
#17 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/src/Parsoid.php(193): Wikimedia\Parsoid\Parsoid->parseWikitext(MWParsoid\Config\PageConfig, array)
#18 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/extension/src/Rest/Handler/ParsoidHandler.php(589): Wikimedia\Parsoid\Parsoid->wikitext2html(MWParsoid\Config\PageConfig, array, NULL)
#19 /srv/mediawiki/php-1.36.0-wmf.14/vendor/wikimedia/parsoid/extension/src/Rest/Handler/PageHandler.php(88): MWParsoid\Rest\Handler\ParsoidHandler->wt2html(MWParsoid\Config\PageConfig, array)
#20 /srv/mediawiki/php-1.36.0-wmf.14/includes/Rest/Router.php(381): MWParsoid\Rest\Handler\PageHandler->execute()
#21 /srv/mediawiki/php-1.36.0-wmf.14/includes/Rest/Router.php(316): MediaWiki\Rest\Router->executeHandler(MWParsoid\Rest\Handler\PageHandler)
#22 /srv/mediawiki/php-1.36.0-wmf.14/includes/Rest/EntryPoint.php(155): MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#23 /srv/mediawiki/php-1.36.0-wmf.14/includes/Rest/EntryPoint.php(119): MediaWiki\Rest\EntryPoint->execute()
#24 /srv/mediawiki/php-1.36.0-wmf.14/rest.php(31): MediaWiki\Rest\EntryPoint::main()
#25 /srv/mediawiki/w/rest.php(3): require(string)
#26 {main}

Change 635663 had a related patch set uploaded (by Arlolra; owner: Arlolra):
[mediawiki/services/parsoid@master] [WIP] Templated template targets are expanded to dom

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

ssastry triaged this task as Medium priority.Oct 22 2020, 6:13 PM
ssastry moved this task from Needs Triage to Bugs & Crashers on the Parsoid board.

Additional test cases:

  • /w/rest.php/commons.wikimedia.org/v3/page/pagebundle/File%3ACatedral_Aix.jpg/448130090 ( Logstash object )
  • /w/rest.php/fr.wikipedia.org/v3/transform/pagebundle/to/wikitext/Liste_des_matchs_de_l%27%C3%A9quipe_de_France_de_football_par_adversaire ( Logstash object )
  • /w/rest.php/commons.wikimedia.org/v3/page/pagebundle/File%3ACatedral_Aix.jpg/448130090 ( Logstash object )

Yeah, this is fixed by the above patch. From the template expansion of {{{{Self|cc-by-sa-old}}|month=November|day=9|year=2007}}

  • /w/rest.php/fr.wikipedia.org/v3/transform/pagebundle/to/wikitext/Liste_des_matchs_de_l%27%C3%A9quipe_de_France_de_football_par_adversaire ( Logstash object )

This is something else, deserves a separate investigation

Change 635663 merged by jenkins-bot:
[mediawiki/services/parsoid@master] Templated template targets are already expanded to dom

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

  • /w/rest.php/fr.wikipedia.org/v3/transform/pagebundle/to/wikitext/Liste_des_matchs_de_l%27%C3%A9quipe_de_France_de_football_par_adversaire ( Logstash object )

This is something else, deserves a separate investigation

Ugh, this is ugly. Sealed fragments are leaking in embedded content

<tr bgcolor="white" about="#mwt2007" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"|12||5 septembre 1970","html":"|12||&lt;time class=\"nowrap\" datetime=\"1970-09-05\" data-sort-value=\"1970-09-05\" about=\"#mwt2004\" typeof=\"mw:Transclusion\" data-parsoid=&apos;{\"stx\":\"html\",\"dsr\":[262456,262482,null,null],\"pi\":[[{\"k\":\"1\"}]]}&apos; data-mw=&apos;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"date-\",\"href\":\"./Modèle:Date-\"},\"params\":{\"1\":{\"wt\":\"5 septembre 1970\"}},\"i\":0}}]}&apos;>5 septembre 1970&lt;/time>"},{"html":""}],[{"txt":"([[Stade Léo-Lagrange (Nice)]]","html":"([[Stade Léo-Lagrange (Nice)]]&lt;sup typeof=\"mw:DOMFragment/sealed/ref\" data-parsoid=&apos;{\"empty\":true,\"selfClose\":true,\"html\":\"mwf194\",\"extTagOffsets\":[262526,262554,28,0],\"dsr\":[262526,262554,28,0]}&apos; data-mw=&apos;{\"name\":\"ref\",\"attrs\":{\"name\":\"Léo-Lagrange\"}}&apos;>&lt;/sup>"},{"html":""}],[{"txt":"Fichier:Flag of France.svg France","html":"&lt;span class=\"datasortkey\" data-sort-value=\"France\" about=\"#mwt2006\" typeof=\"mw:Transclusion\" data-parsoid=&apos;{\"stx\":\"html\",\"dsr\":[262555,262565,null,null],\"pi\":[[]]}&apos; data-mw=&apos;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"France\",\"href\":\"./Modèle:France\"},\"params\":{},\"i\":0}}]}&apos;>&lt;span class=\"flagicon\" data-parsoid=&apos;{\"stx\":\"html\"}&apos;>&lt;figure-inline class=\"mw-image-border noviewer\" typeof=\"mw:Image\" data-parsoid=&apos;{\"optList\":[{\"ck\":\"width\",\"ak\":\"20x18px\"},{\"ck\":\"border\",\"ak\":\"border\"},{\"ck\":\"caption\",\"ak\":\"Drapeau de la France\"},{\"ck\":\"class\",\"ak\":\"class=noviewer\"}]}&apos; data-mw=&apos;{\"caption\":\"Drapeau de la France\"}&apos;>&lt;a href=\"./Fichier:Flag_of_France.svg\" data-parsoid=\"{}\">&lt;img resource=\"./Fichier:Flag_of_France.svg\" src=\"//upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Flag_of_France.svg/20px-Flag_of_France.svg.png\" data-file-width=\"900\" data-file-height=\"600\" data-file-type=\"drawing\" height=\"13\" width=\"20\" srcset=\"//upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Flag_of_France.svg/30px-Flag_of_France.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Flag_of_France.svg/40px-Flag_of_France.svg.png 2x\" data-parsoid=&apos;{\"a\":{\"resource\":\"./Fichier:Flag_of_France.svg\",\"height\":\"13\",\"width\":\"20\"},\"sa\":{\"resource\":\"Fichier:Flag of France.svg\"}}&apos;/>&lt;/a>&lt;/figure-inline> &lt;/span>&lt;a rel=\"mw:WikiLink\" href=\"./France\" title=\"France\" data-parsoid=&apos;{\"stx\":\"piped\",\"a\":{\"href\":\"./France\"},\"sa\":{\"href\":\"France\"}}&apos;>France&lt;/a>&lt;/span>"},{"html":""}]]}' id="mwPVw"></tr>

Looks like a design problem with how we deal with these embedded content fragments since we are butting into it from different directions now.

This is the problematic wikitext causing it. So, you could probably create a reduced test case if you want to dig into the underlying problem in Parsoid land, but we should nevertheless edit that page and fix this for them.

|-  bgcolor=white|12||{{date-|5 septembre 1970}} || [[Nice]] ([[Stade Léo-Lagrange (Nice)]]<ref name="Léo-Lagrange" /> {{France}}  || '''France''' - Tchécoslovaquie || 3-0 || Match amical

Change 636080 had a related patch set uploaded (by Arlolra; owner: Arlolra):
[mediawiki/services/parsoid@master] Fix processHiddenHTMLInDataAttributes

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

Change 636080 merged by jenkins-bot:
[mediawiki/services/parsoid@master] Fix processing embedded keys in processHiddenHTMLInDataAttributes

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

Change 638161 had a related patch set uploaded (by Subramanya Sastry; owner: Subramanya Sastry):
[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.13.0-a14

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

Change 638161 merged by jenkins-bot:
[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.13.0-a14

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