Page MenuHomePhabricator

Bug in MessageBlobStore
Closed, ResolvedPublic

Description

Found this interesting backtrace in our error log. The trace looks sane until it hits #2 ../MessageBlobStore.php(311): wfMsgExt(17, Array)

[30-Dec-2010 21:33:36] /w/i.php?title=Special:Nuke&action=delete: Exception: Non-string key given
#0 /www/w/includes/GlobalFunctions.php(751): MessageCache->get(17, true, Object(Language))
#1 /www/w/includes/GlobalFunctions.php(872): wfMsgGetKey(17, true, Object(Language), false)
#2 /www/w/includes/MessageBlobStore.php(311): wfMsgExt(17, Array)
#3 /www/w/includes/MessageBlobStore.php(294): MessageBlobStore::reencodeBlob('{"collapsible-e...', 17, 'af')
#4 /www/w/includes/MessageBlobStore.php(211): MessageBlobStore::getUpdatesForMessage(17, Array)
#5 /www/w/includes/MessageCache.php(461): MessageBlobStore::updateMessage('collapsible-col...')
#6 /www/w/includes/Article.php(4119): MessageCache->replace('Collapsible-col...', false)
#7 /www/w/includes/Article.php(3286): Article::onArticleDelete(Object(Title))
#8 /www/w/includes/Article.php(3123): Article->doDeleteArticle('Mass deletion o...', false, 1781209)
#9 /www/w/extensions/Nuke/Nuke_body.php(190): Article->doDelete('Mass deletion o...')
#10 /www/w/extensions/Nuke/Nuke_body.php(37): SpecialNuke->doDelete(Array, 'Mass deletion o...')
#11 /www/w/includes/SpecialPage.php(587): SpecialNuke->execute(NULL)
#12 /www/w/includes/Wiki.php(245): SpecialPage::executePath(Object(Title))
#13 /www/w/includes/Wiki.php(63): MediaWiki->handleSpecialCases(Object(Title), Object(OutputPage), Object(WebRequest))
#14 /www/w/index.php(104): MediaWiki->performRequestForTitle(Object(Title), NULL, Object(OutputPage), Object(User), Object(WebRequest))
#15 {main}


Version: 1.18.x
Severity: normal

Details

Reference
bz26535
TitleReferenceAuthorSource BranchDest Branch
add terms of service and privacy policy to descriptionrepos/releng/gitlab-settings!53jeltoadd-login-descriptionmain
Customize query in GitLab

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 21 2014, 11:23 PM
bzimport set Reference to bz26535.

There is variable collision in MessageBlobStore::updateMessage(), foreach overwrites the method parameter.

(In reply to comment #1)

There is variable collision in MessageBlobStore::updateMessage(), foreach
overwrites the method parameter.

Thanks for tracking this down, I'll fix this when I get the chance.

Fixed the variable collision in r79722. This is virtually certain to have been the cause of the bug, but because it only happens for conflicted updates (i.e. when two processes are updating the same blob concurrently), it's virtually impossible to test. Closing as FIXED anyway, reopen if the error appears again.