Crashes when LANG not set in /etc/default/locale and /etc/environment

Bug #346363 reported by Jonas Bonn
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
language-selector (Ubuntu)
Fix Released
Undecided
Arne Goetje

Bug Description

gnome-language-selector crashes if LANG is not set in either /etc/default/locale or /etc/environment.

The error message is:

line 59, in getMissingLangPacks
    if "_" in default_lang:
TypeError: argument of type 'NoneType' is not iterable

where lines 57-60 of /usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.py read:

57: # now check for a missing default language support
58: default_lang = self.getSystemDefaultLanguage()
59: if "_" in default_lang:
60: default_lang = default_lang.split("_")[0]

and getSystemDefaultLanguage reads:

    def getSystemDefaultLanguage(self):
        conffiles = ["/etc/default/locale", "/etc/environment"]
        for fname in conffiles:
            if os.path.exists(fname):
                for line in open(fname):
                    match = re.match(r'LANG="(.*)"$',line)
                    if match:
                        if "." in match.group(1):
                            return match.group(1).split(".")[0]
                        else:
                            return match.group(1)
        return None

Because of the way this function is used, it MAY NOT return None. It should instead return a graceful default: presumably, it should return what is currently returned by the command 'locale' if it is not the C locale, or some graceful default value like en_US.UTF-8.

Jonas Bonn (jonas.bonn)
Changed in language-selector (Ubuntu):
status: New → Confirmed
Loïc Minier (lool)
summary: - Crashes when LANG not set in /etc/default/locale
+ Crashes when LANG not set in /etc/default/locale and /etc/environment
Revision history for this message
Dave Martin (dave-martin-arm) wrote :

I've noticed that gnome-language-selector also fails if the initial content of /etc/default/locale is

LANG="C"

That can happen in a manual install, since some people prefer to avoid the heavyweight locales by default, but I don't think it would ever affect a live image style install.

/usr/lib/python2.6/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py:837: GtkWarning: gtk_cell_view_set_cell_data: assertion `cell_view->priv->displayed_row != NULL' failed
  cell = combo.get_child().get_cell_renderers()[0]
/usr/lib/python2.6/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py:804: GtkWarning: gtk_cell_view_set_cell_data: assertion `cell_view->priv->displayed_row != NULL' failed
  cell = combo.get_child().get_cell_renderers()[0]
Traceback (most recent call last):
  File "/usr/bin/gnome-language-selector", line 34, in <module>
    options=options)
  File "/usr/lib/python2.6/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py", line 172, in __init__
    self.updateSystemDefaultCombo()
  File "/usr/lib/python2.6/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py", line 58, in wrapper
    res = f(*args, **kwargs)
  File "/usr/lib/python2.6/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py", line 815, in updateSystemDefaultCombo
    defaultLangName = self._localeinfo.translate(defaultLangCode)
  File "/usr/lib/python2.6/dist-packages/LanguageSelector/LocaleInfo.py", line 148, in translate
    return self.translate_language(locale)
  File "/usr/lib/python2.6/dist-packages/LanguageSelector/LocaleInfo.py", line 110, in translate_language
    lang_name = gettext.dgettext('iso_639', self._lang[lang])
KeyError: 'C'

Arne Goetje (arnegoetje)
Changed in language-selector (Ubuntu):
assignee: nobody → Arne Goetje (arnegoetje)
status: Confirmed → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package language-selector - 0.4.11

---------------
language-selector (0.4.11) karmic; urgency=low

  * Fix crash in gnome-language-selector (LP: #427716)
  * Fall back to 'en_US' locale if none has been defined or has been set
    to 'C'. (LP: #386029) (LP: #346363) (LP: #347240)
  * Fix crash when ~/.xinput/ is not present (LP: #219218)
  * Add manpage for gnome-language-selector (Thanks to Alex Lourie)
   (LP: #426642)
  * Fix typo in LanguageSelector/FontConfig.py (LP: #219398)
  * data/languagelist: add fallback codes for all English variations we
    have as locales (LP: #47280) (LP: #72952)
  * Update translations from Launchpad
  * Really remove now obsolete Chinese entry from language list
    (LP: #431228)

 -- Arne Goetje <email address hidden> Thu, 17 Sep 2009 22:41:58 +0800

Changed in language-selector (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.