@Gunnar, I'm unsure to understand enough about the issue to comment on the solution. Having some config automatically writen for users seems suboptimal, especially when the config is identic to the system default. Can't we just bail out from doing work in those cases?
-- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to accountsservice in Ubuntu. https://bugs.launchpad.net/bugs/1443178 Title: Accounts Service always relies on language fallback if never set by the user Status in the base for Ubuntu mobile products: New Status in accountsservice package in Ubuntu: In Progress Status in ubuntu-system-settings package in Ubuntu: New Status in unity8 package in Ubuntu: New Bug description: current build number: 169 device name: mako channel: ubuntu-touch/devel-proposed alias: ubuntu-touch/vivid-proposed last update: 2015-04-12 20:38:14 version version: 169 version ubuntu: 20150412 version device: 20150210 version custom: 20150412 This causes a bad side effect when changing volume via indicator- sound, as that will cause a sync to accountsservice in order to sync the volume. Once that sync happens, it will request the user properties, and in case the user doesn't have a valid language at /var/lib/AccountsService/users/<user>, it will always rely on the fallback, which would be fine if calculating the fallback wasn't 't so cpu or i/o intensive (and that happens multiple times). As a test, just flash latest vivid image on mako, don't set any language when the wizard shows up, run top and then change the volume by pressing volume up/down. This is what I see with mako: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2609 phablet 20 0 499660 121220 52688 S 7.6 6.5 0:41.69 unity8 5600 phablet 20 0 3676 1760 1288 R 6.0 0.1 0:00.19 language-option 1312 root 20 0 211532 15572 11344 S 1.9 0.8 0:07.25 unity-system-co 1316 phablet 20 0 36532 3792 2928 S 1.3 0.2 0:01.66 accounts-daemon And the reason why: src/user.c ... static void user_get_property (GObject *object, guint param_id, GValue *value, GParamSpec *pspec) { User *user = USER (object); ... case PROP_LANGUAGE: if (user->language) g_value_set_string (value, user->language); else g_value_set_string (value, user_get_fallback_value (user, "Language")); break; case PROP_FORMATS_LOCALE: if (user->formats_locale) g_value_set_string (value, user->formats_locale); else g_value_set_string (value, user_get_fallback_value (user, "FormatsLocale")); break; user_set_property never gets called unless the user changes the system language from system-settings or wizard. Once you change the language, it will set a valid language at /var/lib/AccountsService/users/<user>, causing this behavior to stop. Another bad side effect of this issue is that it takes quite a while for accountsservice to reply back to indicator-sound when the sync happens, possibly causing sync aborts (as indicator-sound only waits 1 second before triggering another sync). Some possible ways to fix this issue: 1) Make wizard to set language even when the selected language is already the default one; 2) Change accountsservice to save the fallback value at the first time it gets that from the system; To manage notifications about this bug go to: https://bugs.launchpad.net/canonical-devices-system-image/+bug/1443178/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp