Last modified: 2013-09-26 14:54:56 UTC

Wikimedia Bugzilla is closed!

Wikimedia migrated from Bugzilla to Phabricator. Bug reports are handled in Wikimedia Phabricator.
This static website is read-only and for historical purposes. It is not possible to log in and except for displaying bug reports and their history, links might be broken. See T56295, the corresponding Phabricator task for complete and up-to-date bug report information.
Bug 54295 - Infinite recursion when a page redirects to itself
Infinite recursion when a page redirects to itself
Status: VERIFIED FIXED
Product: MediaWiki extensions
Classification: Unclassified
CirrusSearch (Other open bugs)
master
All All
: High major (vote)
: ---
Assigned To: Chad H.
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-09-18 23:10 UTC by Chad H.
Modified: 2013-09-26 14:54 UTC (History)
4 users (show)

See Also:
Web browser: ---
Mobile Platform: ---
Assignee Huggle Beta Tester: ---


Attachments

Description Chad H. 2013-09-18 23:10:16 UTC
The following parser test fails when using hhvm. This is true when you use parserTests.php *or* phpunit.php.

!! article
File:Barfoo.jpg
!! text
#REDIRECT [[File:Barfoo.jpg]]
!! endarticle

!! test
Redirected image
!! input
[[Image:Barfoo.jpg]]
!! result
<p><a href="/wiki/File:Barfoo.jpg" title="File:Barfoo.jpg">File:Barfoo.jpg</a>
</p>
!! end

Not 100% sure why yet, seems like a new breakage in the last week. Definitely narrowed down to this individual test.
Comment 1 Chad H. 2013-09-18 23:41:03 UTC
The recursion we're doing in (Cirrus)SearchUpdate is bad. I've been complaining about this but guess I've got a reason to fix it now :)

We don't handle [[A]] redirecting to [[A]] well at all...which is what this test was doing and thus blowing up. Here's some xdebug output that helps show the problem:


$ php parserTests.php --file=new.txt
This is MediaWiki version 1.22alpha (50c30a7).

PHP Fatal error:  Maximum function nesting level of '100' reached, aborting! in /www/mediawiki/core/includes/db/DatabaseMysqlBase.php on line 480
PHP Stack trace:
PHP   1. {main}() /www/mediawiki/core/tests/parserTests.php:0
PHP   2. ParserTest->runTestsFromFiles() /www/mediawiki/core/tests/parserTests.php:92
PHP   3. ParserTest->runTests() /www/mediawiki/core/tests/parser/parserTest.inc:457
PHP   4. TestFileIterator->rewind() /www/mediawiki/core/tests/parser/parserTest.inc:473
PHP   5. TestFileIterator->next() /www/mediawiki/core/tests/testHelpers.inc:385
PHP   6. TestFileIterator->readNextTest() /www/mediawiki/core/tests/testHelpers.inc:399
PHP   7. ParserTest::addArticle() /www/mediawiki/core/tests/testHelpers.inc:429
PHP   8. WikiPage->doEditContent() /www/mediawiki/core/tests/parser/parserTest.inc:1331
PHP   9. WikiPage->doEditUpdates() /www/mediawiki/core/includes/WikiPage.php:1911
PHP  10. DataUpdate::runUpdates() /www/mediawiki/core/includes/WikiPage.php:2077
PHP  11. LinksUpdate->doUpdate() /www/mediawiki/core/includes/DataUpdate.php:102
PHP  12. wfRunHooks() /www/mediawiki/core/includes/LinksUpdate.php:123
PHP  13. Hooks::run() /www/mediawiki/core/includes/GlobalFunctions.php:3882
PHP  14. call_user_func_array() /www/mediawiki/core/includes/Hooks.php:199
PHP  15. CirrusSearchUpdater::linksUpdateCompletedHook() /www/mediawiki/core/includes/Hooks.php:199
PHP  16. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:98
PHP  17. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  18. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  19. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  20. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  21. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  22. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  23. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  24. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  25. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  26. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  27. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  28. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  29. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  30. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  31. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  32. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  33. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  34. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  35. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  36. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  37. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  38. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  39. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  40. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  41. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  42. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  43. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  44. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  45. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  46. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  47. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  48. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  49. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  50. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  51. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  52. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  53. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  54. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  55. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  56. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  57. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  58. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  59. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  60. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  61. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  62. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  63. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  64. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  65. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  66. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  67. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  68. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  69. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  70. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  71. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  72. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  73. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  74. CirrusSearch->update() /www/mediawiki/core/includes/search/SearchUpdate.php:117
PHP  75. CirrusSearchUpdater::updateFromTitleAndText() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:51
PHP  76. CirrusSearchUpdater::updateFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:60
PHP  77. SearchUpdate->doUpdate() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchUpdater.php:89
PHP  78. CirrusSearch->getTextFromContent() /www/mediawiki/core/includes/search/SearchUpdate.php:111
PHP  79. CirrusSearchTextSanitizer::getSantizedTextFromTitle() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearch.body.php:72
PHP  80. Article->getParserOutput() /www/mediawiki/core/extensions/CirrusSearch/CirrusSearchTextSanitizer.php:38
PHP  81. WikiPage->getParserOutput() /www/mediawiki/core/includes/Article.php:1818
PHP  82. PoolCounterWork->execute() /www/mediawiki/core/includes/WikiPage.php:1126
PHP  83. PoolWorkArticleView->doWork() /www/mediawiki/core/includes/PoolCounter.php:222
PHP  84. WikitextContent->getParserOutput() /www/mediawiki/core/includes/WikiPage.php:3514
PHP  85. Parser->parse() /www/mediawiki/core/includes/content/WikitextContent.php:300
PHP  86. Parser->internalParse() /www/mediawiki/core/includes/parser/Parser.php:388
PHP  87. Parser->replaceInternalLinks() /www/mediawiki/core/includes/parser/Parser.php:1219
PHP  88. Parser->replaceInternalLinks2() /www/mediawiki/core/includes/parser/Parser.php:1814
PHP  89. wfIsBadImage() /www/mediawiki/core/includes/parser/Parser.php:2060
PHP  90. RepoGroup->checkRedirect() /www/mediawiki/core/includes/GlobalFunctions.php:3940
PHP  91. LocalRepo->checkRedirect() /www/mediawiki/core/includes/filerepo/RepoGroup.php:211
PHP  92. LocalRepo->getArticleID() /www/mediawiki/core/includes/filerepo/LocalRepo.php:178
PHP  93. DatabaseBase->selectField() /www/mediawiki/core/includes/filerepo/LocalRepo.php:221
PHP  94. DatabaseBase->select() /www/mediawiki/core/includes/db/Database.php:1161
PHP  95. DatabaseBase->selectSQLText() /www/mediawiki/core/includes/db/Database.php:1445
PHP  96. DatabaseBase->tableNamesWithUseIndexOrJOIN() /www/mediawiki/core/includes/db/Database.php:1486
PHP  97. DatabaseBase->tableNameWithAlias() /www/mediawiki/core/includes/db/Database.php:2266
PHP  98. DatabaseBase->tableName() /www/mediawiki/core/includes/db/Database.php:2163
PHP  99. DatabaseMysqlBase->isQuotedIdentifier() /www/mediawiki/core/includes/db/Database.php:2054
Comment 2 Nik Everett 2013-09-19 13:57:58 UTC
Chad, do you particularly want to work on this one of should I grab it?  You'd be better suited for it because you know MediaWiki better but you are so busy.
Comment 3 Nik Everett 2013-09-19 18:23:53 UTC
Merged fix:  https://gerrit.wikimedia.org/r/#/c/85009/
Comment 4 Nik Everett 2013-09-26 14:54:56 UTC
Verified on test2wiki.

Note You need to log in before you can comment on or make changes to this bug.


Navigation
Links