Page MenuHomePhabricator

PHP Warning: Invalid argument supplied for foreach() in Special:ProtectedTitles page
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   PHP Warning: Invalid argument supplied for foreach()
exception.trace
from /srv/mediawiki/php-1.40.0-wmf.7/includes/pager/AlphabeticPager.php(51)
#0 /srv/mediawiki/php-1.40.0-wmf.7/includes/pager/AlphabeticPager.php(51): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.40.0-wmf.7/includes/specials/SpecialProtectedtitles.php(84): AlphabeticPager->getNavigationBar()
#2 /srv/mediawiki/php-1.40.0-wmf.7/includes/specialpage/SpecialPage.php(701): SpecialProtectedtitles->execute(NULL)
#3 /srv/mediawiki/php-1.40.0-wmf.7/includes/specialpage/SpecialPageFactory.php(1451): SpecialPage->run(NULL)
#4 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(316): MediaWiki\SpecialPage\SpecialPageFactory->executePath(string, RequestContext)
#5 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(904): MediaWiki->performRequest()
#6 /srv/mediawiki/php-1.40.0-wmf.7/includes/MediaWiki.php(562): MediaWiki->main()
#7 /srv/mediawiki/php-1.40.0-wmf.7/index.php(50): MediaWiki->run()
#8 /srv/mediawiki/php-1.40.0-wmf.7/index.php(46): wfIndexMain()
#9 /srv/mediawiki/w/index.php(3): require(string)
#10 {main}
Notes

Observed on mediawikiwiki after deployment of 1.40.0-wmf.7 to group 0.

Reproduces consistently by hitting the Special:ProtectedTitles page: https://www.mediawiki.org/wiki/Special:ProtectedTitles

Main rendering of the page doesn't seem affected. Other special pages don't seem affected.

Event Timeline

jnuche renamed this task from PHP Warning: Invalid argument supplied for foreach() to PHP Warning: Invalid argument supplied for foreach() in Special:ProtectedTitles page.Oct 25 2022, 11:24 AM
Umherirrender subscribed.

The code path is only reached when Pager::getIndexField returns an array, which is true since https://gerrit.wikimedia.org/r/c/mediawiki/core/+/787832 for that special page (and some others) and the navigation bar is shown, which has happen after 50 entries. My test wiki does not have that many pages protected, but with a limit=1 I can see it as well.

Change 849132 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/core@master] pager: Fix null used for foreach in Pager::getNavigationBar

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

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

[mediawiki/core@master] pager: Remove unused AlphabeticPager::getOrderTypeMessages() support

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

Change 849132 merged by jenkins-bot:

[mediawiki/core@master] pager: Fix null used for foreach in Pager::getNavigationBar

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

The production error is fixed

Change 850612 merged by jenkins-bot:

[mediawiki/core@master] pager: Remove unused AlphabeticPager::getOrderTypeMessages() support

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

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

[mediawiki/core@REL1_39] pager: Fix null used for foreach in Pager::getNavigationBar

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

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

[mediawiki/core@REL1_39] pager: Remove unused AlphabeticPager::getOrderTypeMessages() support

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

Change 853027 merged by jenkins-bot:

[mediawiki/core@REL1_39] pager: Fix null used for foreach in Pager::getNavigationBar

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

Change 853028 merged by jenkins-bot:

[mediawiki/core@REL1_39] pager: Remove unused AlphabeticPager::getOrderTypeMessages() support

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