Page MenuHomePhabricator

api.php?action=discussionstools triggers PHP Warning: array_merge(): Argument #1 is not an array
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   PHP Warning: array_merge(): Argument #1 is not an array
exception.trace
from /srv/mediawiki/php-1.38.0-wmf.5/includes/GlobalFunctions.php(403)
#0 [internal function]: MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.38.0-wmf.5/includes/GlobalFunctions.php(403): array_merge(string, array)
#2 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/CommentUtils.php(436): wfCgiToArray(string)
#3 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/CommentParser.php(545): MediaWiki\Extension\DiscussionTools\CommentUtils::getTitleFromUrl(string)
#4 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/CommentParser.php(625): MediaWiki\Extension\DiscussionTools\CommentParser::getUsernameFromLink(Wikimedia\Parsoid\DOM\Compat\Element)
#5 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/CommentUtils.php(508): MediaWiki\Extension\DiscussionTools\CommentParser->MediaWiki\Extension\DiscussionTools\{closure}(string, Wikimedia\Parsoid\DOM\Compat\Element)
#6 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/CommentParser.php(638): MediaWiki\Extension\DiscussionTools\CommentUtils::linearWalkBackwards(Wikimedia\Parsoid\DOM\Compat\Text, Closure)
#7 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/CommentParser.php(904): MediaWiki\Extension\DiscussionTools\CommentParser->findSignature(Wikimedia\Parsoid\DOM\Compat\Text, Wikimedia\Parsoid\DOM\Compat\Text)
#8 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/CommentParser.php(1184): MediaWiki\Extension\DiscussionTools\CommentParser->buildThreadItems()
#9 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/CommentParser.php(785): MediaWiki\Extension\DiscussionTools\CommentParser->buildThreads()
#10 /srv/mediawiki/php-1.38.0-wmf.5/extensions/DiscussionTools/includes/ApiDiscussionTools.php(48): MediaWiki\Extension\DiscussionTools\CommentParser->getThreadItems()
#11 /srv/mediawiki/php-1.38.0-wmf.5/includes/api/ApiMain.php(1878): MediaWiki\Extension\DiscussionTools\ApiDiscussionTools->execute()
#12 /srv/mediawiki/php-1.38.0-wmf.5/includes/api/ApiMain.php(857): ApiMain->executeAction()
#13 /srv/mediawiki/php-1.38.0-wmf.5/includes/api/ApiMain.php(828): ApiMain->executeActionWithErrorHandling()
#14 /srv/mediawiki/php-1.38.0-wmf.5/api.php(90): ApiMain->execute()
#15 /srv/mediawiki/php-1.38.0-wmf.5/api.php(45): wfApiMain()
#16 /srv/mediawiki/w/api.php(3): require(string)
#17 {main}
Impact

Apparently none, the page seems to log just fine? Tagging DiscussionTools since the API request has action=discussiontools.

Notes

Only one found, it is reproducible when hitting https://fr.wikipedia.org/wiki/Discussion_utilisateur:TaraO/archivage1

Details

Request URL
https://fr.wikipedia.org/w/api.php?action=discussiontools&format=*&formatversion=*&uselang=*&paction=*&page=*&oldid=*
Related Changes in Gerrit:

Event Timeline

hashar renamed this task from PHP Warning: array_merge(): Argument #1 is not an array to api.php?action=discussionstools triggers PHP Warning: array_merge(): Argument #1 is not an array.Oct 21 2021, 1:33 PM

The warning occurs because of this link on the page: http://hokej.cz/index.php?view=&lng=CZ&webid=388&id=0&rnd=&debug=&ban=&search_text=hledan%FD+v%FDraz&search_where=3&webuser_login=&webuser_passw=&news_email=%40&idk=&ids=&sezona=&razeni=9&sezona=2006&ids%5B%5D=553&act= (DiscussionTools scans through all links while looking for signatures on the page)

Minimal code to reproduce: wfCgiToArray( 'a=x&a[]=y' );

Change 732762 had a related patch set uploaded (by Bartosz Dziewoński; author: Bartosz Dziewoński):

[mediawiki/core@master] Fix PHP warning with some inputs to wfCgiToArray()

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

Change 732762 merged by jenkins-bot:

[mediawiki/core@master] Fix PHP warning with some inputs to wfCgiToArray()

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