Last modified: 2014-02-11 13:48:53 UTC
Two somewhat different stacktraces 2013-12-30 13:35:03 mw1021 enwiki: Invalid parameter for message "parentheses": a:1:{s:3:"raw";N;} #0 /usr/local/apache/common-local/php-1.23wmf7/includes/Message.php(786): Message->extractParam(Array) #1 /usr/local/apache/common-local/php-1.23wmf7/includes/Message.php(580): Message->replaceParameters('($1)', 'before') #2 /usr/local/apache/common-local/php-1.23wmf7/includes/Message.php(680): Message->toString() #3 /usr/local/apache/common-local/php-1.23wmf7/includes/Linker.php(1589): Message->escaped() #4 /usr/local/apache/common-local/php-1.23wmf7/includes/changes/ChangesList.php(422): Linker::commentBlock('???[[Category:M...', Object(Title)) #5 /usr/local/apache/common-local/php-1.23wmf7/includes/changes/OldChangesList.php(102): ChangesList->insertComment(Object(RecentChange)) #6 /usr/local/apache/common-local/php-1.23wmf7/includes/specials/SpecialWatchlist.php(426): OldChangesList->recentChangesLine(Object(RecentChange), NULL, 728) #7 /usr/local/apache/common-local/php-1.23wmf7/includes/specialpage/SpecialPage.php(673): SpecialWatchlist->execute(NULL) #8 /usr/local/apache/common-local/php-1.23wmf7/includes/SpecialPageFactory.php(488): SpecialPage->run(NULL) #9 /usr/local/apache/common-local/php-1.23wmf7/includes/Wiki.php(298): SpecialPageFactory::executePath(Object(Title), Object(RequestContext)) #10 /usr/local/apache/common-local/php-1.23wmf7/includes/Wiki.php(596): MediaWiki->performRequest() #11 /usr/local/apache/common-local/php-1.23wmf7/includes/Wiki.php(460): MediaWiki->main() #12 /usr/local/apache/common-local/php-1.23wmf7/index.php(49): MediaWiki->run() #13 /usr/local/apache/common-local/w/index.php(3): require('/usr/local/apac...') #14 {main} 2013-12-30 09:39:15 mw1068 enwiki: Invalid parameter for message "parentheses": a:1:{s:3:"raw";N;} #0 /usr/local/apache/common-local/php-1.23wmf7/includes/Message.php(786): Message->extractParam(Array) #1 /usr/local/apache/common-local/php-1.23wmf7/includes/Message.php(599): Message->replaceParameters('([INVALID])', 'after') #2 /usr/local/apache/common-local/php-1.23wmf7/includes/Message.php(680): Message->toString() #3 /usr/local/apache/common-local/php-1.23wmf7/includes/Linker.php(1589): Message->escaped() #4 /usr/local/apache/common-local/php-1.23wmf7/includes/changes/ChangesList.php(422): Linker::commentBlock('no reason not t...', Object(Title)) #5 /usr/local/apache/common-local/php-1.23wmf7/includes/changes/OldChangesList.php(102): ChangesList->insertComment(Object(RecentChange)) #6 /usr/local/apache/common-local/php-1.23wmf7/includes/specials/SpecialRecentchanges.php(494): OldChangesList->recentChangesLine(Object(RecentChange), false, 4) #7 /usr/local/apache/common-local/php-1.23wmf7/includes/specials/SpecialRecentchanges.php(185): SpecialRecentChanges->webOutput(Object(ResultWrapper), Object(FormOptions)) #8 /usr/local/apache/common-local/php-1.23wmf7/includes/specialpage/SpecialPage.php(673): SpecialRecentChanges->execute('Pumila') #9 /usr/local/apache/common-local/php-1.23wmf7/includes/SpecialPageFactory.php(488): SpecialPage->run('Pumila') #10 /usr/local/apache/common-local/php-1.23wmf7/includes/Wiki.php(298): SpecialPageFactory::executePath(Object(Title), Object(RequestContext)) #11 /usr/local/apache/common-local/php-1.23wmf7/includes/Wiki.php(596): MediaWiki->performRequest() #12 /usr/local/apache/common-local/php-1.23wmf7/includes/Wiki.php(460): MediaWiki->main() #13 /usr/local/apache/common-local/php-1.23wmf7/index.php(49): MediaWiki->run() #14 /usr/local/apache/common-local/w/index.php(3): require('/usr/local/apac...') #15 {main}
a:1:{s:3:"raw";N;} sounds like a array with 'raw' => null and than the isset in Message.php will be false and the error is triggered. I have no idea why Linker::commentBlock gets a null from Linker::formatComment. The text on the second stacktrace should be "no reason not to link [[human]]s" (https://en.wikipedia.org/w/index.php?title=Chordate&diff=587967257&oldid=585538122)
Within Linker::formatComment, the $comment parameter that is ultimately returned passes through three different method calls that utilize preg_replace_callback: * Sanitizer::escapeHtmlAllowEntities * Linker::formatAutocomments * Linker::formatLinksInComment preg_replace_callback is documented to return null on error in in no case is the return value checked.