Page MenuHomePhabricator

Unable to view Special:DoubleRedirects on tt.wikipedia.org due to PHP Fatal from Title.php
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error

Request ID: W3reBwpAAEUAAICDY38AAABV

message
[{exception_id}] {exception_url}   BadMethodCallException from line 1610 of /srv/mediawiki/php-1.32.0-wmf.20/includes/Title.php: Call to a member function isLocal() on a non-object (null)
stacktrace
#0 /srv/mediawiki/php-1.32.0-wmf.20/includes/Title.php(1923): Title->getFragmentForURL()
#1 /srv/mediawiki/php-1.32.0-wmf.20/includes/Title.php(2081): Title->getFullURL(string, boolean, boolean)
#2 /srv/mediawiki/php-1.32.0-wmf.20/includes/linker/LinkRenderer.php(409): Title->getLinkURL(array, boolean, boolean)
#3 /srv/mediawiki/php-1.32.0-wmf.20/includes/linker/LinkRenderer.php(256): MediaWiki\Linker\LinkRenderer->getLinkURL(Title, array)
#4 /srv/mediawiki/php-1.32.0-wmf.20/includes/linker/LinkRenderer.php(299): MediaWiki\Linker\LinkRenderer->makePreloadedLink(Title, string, string, array, array)
#5 /srv/mediawiki/php-1.32.0-wmf.20/includes/specials/SpecialDoubleRedirects.php(193): MediaWiki\Linker\LinkRenderer->makeKnownLink(Title, string)
#6 /srv/mediawiki/php-1.32.0-wmf.20/includes/specialpage/QueryPage.php(704): DoubleRedirectsPage->formatResult(SkinVector, stdClass)
#7 /srv/mediawiki/php-1.32.0-wmf.20/includes/specialpage/QueryPage.php(672): QueryPage->outputResults(OutputPage, SkinVector, Wikimedia\Rdbms\DatabaseMysqli, Wikimedia\Rdbms\ResultWrapper, integer, integer)
#8 /srv/mediawiki/php-1.32.0-wmf.20/includes/specialpage/SpecialPage.php(569): QueryPage->execute(NULL)
#9 /srv/mediawiki/php-1.32.0-wmf.20/includes/specialpage/SpecialPageFactory.php(581): SpecialPage->run(NULL)
#10 /srv/mediawiki/php-1.32.0-wmf.20/includes/MediaWiki.php(288): MediaWiki\Special\SpecialPageFactory->executePath(Title, RequestContext)
#11 /srv/mediawiki/php-1.32.0-wmf.20/includes/MediaWiki.php(868): MediaWiki->performRequest()
#12 /srv/mediawiki/php-1.32.0-wmf.20/includes/MediaWiki.php(525): MediaWiki->main()
#13 /srv/mediawiki/php-1.32.0-wmf.20/index.php(42): MediaWiki->run()
#14 /srv/mediawiki/w/index.php(3): include(string)

Notes

A similar problem in the same class was previously reported and fixed in 2013 (T44649).

The problem can be consistently reproduced by simply viewing https://tt.wikipedia.org/wiki/Special:DoubleRedirects. Logstash first recorded it (this time) on 20 August (1.32.0-wmf.16).

Event Timeline

Still seen on 1.32.0-wmf.23.

Raising priority of this one in particular because it exposes a fatal error on a public GET url, which is a risk for false alarms.

Krinkle renamed this task from PHP Fatal: Call to isLocal() on a non-object in Title.php (when viewing Special:DoubleRedirects on ttwiki) to Unable to view ttwiki/Special:DoubleRedirects due to PHP Fatal:"Call to isLocal() on a non-object in Title.php".Oct 2 2018, 8:22 PM
Krinkle triaged this task as High priority.
Krinkle renamed this task from Unable to view ttwiki/Special:DoubleRedirects due to PHP Fatal:"Call to isLocal() on a non-object in Title.php" to Unable to view Special:DoubleRedirects on tt.wikipedia.org due to PHP Fatal from Title.php.Jan 18 2019, 3:11 AM
Krinkle added a project: Platform Engineering.

Analysis: This code in getFragmentForURL() is missing a null check:

self::getInterwikiLookup()->fetch( $this->mInterwiki )->isLocal()

Change 486045 had a related patch set uploaded (by Daniel Kinzler; owner: Daniel Kinzler):
[mediawiki/core@master] Fix Title::getFragmentForURL for bad interwiki prefix.

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

Change 486045 merged by jenkins-bot:
[mediawiki/core@master] Fix Title::getFragmentForURL for bad interwiki prefix.

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

Can be closed as soon as this has gone live and we have confirmed that the problem is fixed.

Does anyone think this needs a backport to 1.32? Or SWAT?

Change 487976 had a related patch set uploaded (by Krinkle; owner: Daniel Kinzler):
[mediawiki/core@wmf/1.33.0-wmf.14] Fix Title::getFragmentForURL for bad interwiki prefix.

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

Change 487976 abandoned by Krinkle:
Fix Title::getFragmentForURL for bad interwiki prefix.

Reason:
redundant.

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

Change 489423 had a related patch set uploaded (by Krinkle; owner: Daniel Kinzler):
[mediawiki/core@REL1_32] Fix Title::getFragmentForURL for bad interwiki prefix.

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

Change 489423 merged by jenkins-bot:
[mediawiki/core@REL1_32] Fix Title::getFragmentForURL for bad interwiki prefix.

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

mmodell changed the subtype of this task from "Task" to "Production Error".Aug 28 2019, 11:08 PM