Page MenuHomePhabricator

Inserting an utf8 character into the MediaWiki:Sidebar crashes Mediawiki rendering process
Open, Needs TriagePublic

Description

I use mediawiki 1.31.2 with a standard mysql setup. I edited my sidebar and inserted an utf8 arrow character (🠒). When mediawiki renders a page, I only get the following error message (debug enabled via LocalSettings.php):

[7b56a22d85e7ca2dcbf4ea86] /mediawiki/management/index.php/Main_Page Wikimedia\Rdbms\DBQueryError from line 1457 of /home/www/myinternalhostnamemasked.tld/wikis/management/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading?
Query: SELECT lc_value FROM `l10n_cache` WHERE lc_lang = 'en' AND lc_key = 'messages:🠒_https://myinternalhostnamemasked.tld/mediawiki/company/index.php' LIMIT 1
Function: LCStoreDB::get
Error: 1300 Invalid utf8 character string: 'F09FA0' (localhost)
Backtrace
#0 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/libs/rdbms/database/Database.php(1427): Wikimedia\Rdbms\Database->makeQueryException(string, integer, string, string)
#1 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/libs/rdbms/database/Database.php(1200): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#2 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/libs/rdbms/database/Database.php(1653): Wikimedia\Rdbms\Database->query(string, string)
#3 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/libs/rdbms/database/Database.php(1479): Wikimedia\Rdbms\Database->select(string, string, array, string, array, array)
#4 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/cache/localisation/LCStoreDB.php(52): Wikimedia\Rdbms\Database->selectField(string, string, array, string)
#5 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/cache/localisation/LocalisationCache.php(393): LCStoreDB->get(string, string)
#6 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/cache/localisation/LocalisationCache.php(292): LocalisationCache->loadSubitem(string, string, string)
#7 /home/www/myinternalhostnamemasked.tld/wikis/management/languages/Language.php(2599): LocalisationCache->getSubitem(string, string, string)
#8 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/cache/MessageCache.php(913): Language->getMessage(string)
#9 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/cache/MessageCache.php(868): MessageCache->getMessageForLang(LanguageEn, string, boolean, array)
#10 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/cache/MessageCache.php(808): MessageCache->getMessageFromFallbackChain(LanguageEn, string, boolean)
#11 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/Message.php(1290): MessageCache->get(string, boolean, LanguageEn)
#12 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/Message.php(982): Message->fetchMessage()
#13 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/skins/Skin.php(1348): Message->exists()
#14 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/skins/Skin.php(1305): Skin->addToSidebarPlain(array, string)
#15 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/skins/Skin.php(1261): Skin->addToSidebar(array, string)
#16 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/skins/Skin.php(1287): Skin->{closure}()
#17 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/skins/SkinTemplate.php(481): Skin->buildSidebar()
#18 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/skins/SkinTemplate.php(249): SkinTemplate->prepareQuickTemplate()
#19 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/OutputPage.php(2388): SkinTemplate->outputPage()
#20 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/MediaWiki.php(868): OutputPage->output(boolean)
#21 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/MediaWiki.php(880): MediaWiki->{closure}()
#22 /home/www/myinternalhostnamemasked.tld/wikis/management/includes/MediaWiki.php(524): MediaWiki->main()
#23 /home/www/myinternalhostnamemasked.tld/wikis/management/index.php(42): MediaWiki->run()
#24 {main}

I fixed it by removing the "problematic" character using the mysql client:

update text set old_text = '' where old_id = 262;

Afterwards, mediawiki was able to process the sidebar content, I edited the page manually to restore its properly working content.

Event Timeline

Hi @Nitram2342, thanks for taking the time to report this and welcome to Wikimedia Phabricator. Looks like an issue in the l10n-cache.