Page MenuHomePhabricator

Visual editor exception with PHP 8.1 on pages that use templates
Closed, ResolvedPublicBUG REPORT

Description

List of steps to reproduce (step by step, including full links if applicable):

  • Try and edit a page that uses templates (at least I think that's the requirement) with the visual editor

What happens?:

A popup reports a 500 error and it falls back to edit source. Hitting the underlying REST URL directly with exception reporting enabled results in:

rest.php/wiki.example.com/v3/page/html/New_features/26357?redirect=false&stash=true

Exception: Serialization of 'Wikimedia\Parsoid\DOM\Compat\Element' is not allowed

Backtrace:

from /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Utils/Utils.php(87)
#0 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Utils/Utils.php(87): serialize()
#1 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/PP/Processors/WrapTemplates.php(916): Wikimedia\Parsoid\Utils\Utils::clone()
#2 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/PP/Processors/WrapTemplates.php(1236): Wikimedia\Parsoid\Wt2Html\PP\Processors\WrapTemplates::encapsulateTemplates()
#3 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/PP/Processors/WrapTemplates.php(1249): Wikimedia\Parsoid\Wt2Html\PP\Processors\WrapTemplates::wrapTemplatesInTree()
#4 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(159): Wikimedia\Parsoid\Wt2Html\PP\Processors\WrapTemplates->run()
#5 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(937): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->Wikimedia\Parsoid\Wt2Html\{closure}()
#6 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(987): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->doPostProcess()
#7 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(1004): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->process()
#8 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(178): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily()
#9 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(307): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily()
#10 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Core/WikitextContentModelHandler.php(106): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse()
#11 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Parsoid.php(166): Wikimedia\Parsoid\Core\WikitextContentModelHandler->toDOM()
#12 /srv/wiki.example.com/vendor/wikimedia/parsoid/src/Parsoid.php(198): Wikimedia\Parsoid\Parsoid->parseWikitext()
#13 /srv/wiki.example.com/extensions/VisualEditor/includes/VEParsoid/src/Rest/Handler/ParsoidHandler.php(590): Wikimedia\Parsoid\Parsoid->wikitext2html()
#14 /srv/wiki.example.com/extensions/VisualEditor/includes/VEParsoid/src/Rest/Handler/PageHandler.php(90): VEParsoid\Rest\Handler\ParsoidHandler->wt2html()
#15 /srv/wiki.example.com/includes/Rest/Router.php(403): VEParsoid\Rest\Handler\PageHandler->execute()
#16 /srv/wiki.example.com/includes/Rest/Router.php(330): MediaWiki\Rest\Router->executeHandler()
#17 /srv/wiki.example.com/includes/Rest/EntryPoint.php(165): MediaWiki\Rest\Router->execute()
#18 /srv/wiki.example.com/includes/Rest/EntryPoint.php(130): MediaWiki\Rest\EntryPoint->execute()
#19 /srv/wiki.example.com/rest.php(31): MediaWiki\Rest\EntryPoint::main()
#20 {main}

What should have happened instead?:

The visual editor should have opened.

Software version (if not a Wikimedia wiki), browser information, screenshots, other information, etc.:

Mediawiki 1.37.2
PHP 8.1.5

Event Timeline

Thanks. I can confirm that applying that patch to our installation fixed things.

Change 790729 had a related patch set uploaded (by Arlolra; author: Tim Starling):

[mediawiki/services/parsoid@REL1_37] Don't try to deep clone DOM nodes

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

Change 790729 merged by jenkins-bot:

[mediawiki/services/parsoid@REL1_37] Don't try to deep clone DOM nodes

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

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

[mediawiki/vendor@REL1_37] Bump wikimedia/parsoid to 0.14.1

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

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

[mediawiki/vendor@REL1_37] Bump wikimedia/parsoid to 0.14.1

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

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

[mediawiki/core@REL1_37] Bump wikimedia/parsoid to 0.14.1

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

Change 790777 merged by Reedy:

[mediawiki/vendor@REL1_37] Bump wikimedia/parsoid to 0.14.1

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

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

[mediawiki/core@REL1_37] Update git submodules

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

Change 803349 abandoned by Reedy:

[mediawiki/core@REL1_37] Update git submodules

Reason:

Indeed; magic worked as magic was expected to https://github.com/wikimedia/mediawiki/commit/05afc6e173a986c8961bf3402c7bcd167dc5e9a1

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

Arlolra claimed this task.

Change 803304 merged by jenkins-bot:

[mediawiki/core@REL1_37] Bump wikimedia/parsoid to 0.14.1

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